LEX: Все началось с этого:
Neverwinter Script Source |
int StartingConditional() { object oPC = GetPCSpeaker(); if (GetLocalString(oPC, "victorspoken") == "1") return FALSE; if (GetGender(oPC) != GENDER_FEMALE) return FALSE; if (GetRacialType(oPC) != RACIAL_TYPE_DWARF) return FALSE; if (GetRacialType(oPC) != RACIAL_TYPE_GNOME) return FALSE; if (GetRacialType(oPC) != RACIAL_TYPE_HALFLING) return FALSE; return TRUE; } |
Neverwinter Script Source |
int StartingConditional() { object oPC = GetPCSpeaker(); int bResult = FALSE; if(GetLocalString(oPC, "victorspoken")=="1") return FALSE; bResult = (GetRacialType(oPC) = RACIAL_TYPE_DWARF || GetRacialType(oPC) == RACIAL_TYPE_GNOME || GetRacialType(oPC) == RACIAL_TYPE_HALFLING) && (GetGender(oPC) == GENDER_FEMALE); return bResult; } |
QUOTE (AliceDiren @ Oct 18 2005, 15:17) |
Быть может так проще? |
Neverwinter Script Source |
if (female) { if (races) return } |
Neverwinter Script Source |
if (female)&&(races) return |
Neverwinter Script Source |
return (races)&&(female)&&(LocalInt != 1); |
Neverwinter Script Source |
void main() { int i; if (i == 0x123) return; if (i == 0x321) return; if (i == 0x111) return; if (i == 0x222) return; i = 0x666; } |
Neverwinter Script Source |
void main() { int i; if (i == 0x123 || i == 0x321 || i == 0x111 || i == 0x222) return; i = 0x666; } |
CODE |
00000008 42 000000D3 T 000000D3 0000000D 1E 00 00000008 JSR fn_00000015 00000013 20 00 RETN 00000015 02 03 RSADDI 00000017 03 01 FFFFFFFC 0004 CPTOPSP FFFFFFFC, 0004 0000001F 04 03 00000123 CONSTI 00000123 00000025 0B 20 EQUALII 00000027 1F 00 00000018 JZ off_0000003F 0000002D 1B 00 FFFFFFFC MOVSP FFFFFFFC 00000033 1D 00 0000009E JMP off_000000D1 00000039 1D 00 00000006 JMP off_0000003F 0000003F 03 01 FFFFFFFC 0004 CPTOPSP FFFFFFFC, 0004 00000047 04 03 00000321 CONSTI 00000321 0000004D 0B 20 EQUALII 0000004F 1F 00 00000018 JZ off_00000067 00000055 1B 00 FFFFFFFC MOVSP FFFFFFFC 0000005B 1D 00 00000076 JMP off_000000D1 00000061 1D 00 00000006 JMP off_00000067 00000067 03 01 FFFFFFFC 0004 CPTOPSP FFFFFFFC, 0004 0000006F 04 03 00000111 CONSTI 00000111 00000075 0B 20 EQUALII 00000077 1F 00 00000018 JZ off_0000008F 0000007D 1B 00 FFFFFFFC MOVSP FFFFFFFC 00000083 1D 00 0000004E JMP off_000000D1 00000089 1D 00 00000006 JMP off_0000008F 0000008F 03 01 FFFFFFFC 0004 CPTOPSP FFFFFFFC, 0004 00000097 04 03 00000222 CONSTI 00000222 0000009D 0B 20 EQUALII 0000009F 1F 00 00000018 JZ off_000000B7 000000A5 1B 00 FFFFFFFC MOVSP FFFFFFFC 000000AB 1D 00 00000026 JMP off_000000D1 000000B1 1D 00 00000006 JMP off_000000B7 000000B7 04 03 00000666 CONSTI 00000666 000000BD 01 01 FFFFFFF8 0004 CPDOWNSP FFFFFFF8, 0004 000000C5 1B 00 FFFFFFFC MOVSP FFFFFFFC 000000CB 1B 00 FFFFFFFC MOVSP FFFFFFFC 000000D1 20 00 RETN |
CODE |
00000008 42 000000E5 T 000000E5 0000000D 1E 00 00000008 JSR fn_00000015 00000013 20 00 RETN 00000015 02 03 RSADDI 00000017 03 01 FFFFFFFC 0004 CPTOPSP FFFFFFFC, 0004 0000001F 04 03 00000123 CONSTI 00000123 00000025 0B 20 EQUALII 00000027 03 01 FFFFFFFC 0004 CPTOPSP FFFFFFFC, 0004 0000002F 1F 00 00000014 JZ off_00000043 00000035 03 01 FFFFFFFC 0004 CPTOPSP FFFFFFFC, 0004 0000003D 1D 00 00000016 JMP off_00000053 00000043 03 01 FFFFFFF8 0004 CPTOPSP FFFFFFF8, 0004 0000004B 04 03 00000321 CONSTI 00000321 00000051 0B 20 EQUALII 00000053 07 20 LOGORII 00000055 03 01 FFFFFFFC 0004 CPTOPSP FFFFFFFC, 0004 0000005D 1F 00 00000014 JZ off_00000071 00000063 03 01 FFFFFFFC 0004 CPTOPSP FFFFFFFC, 0004 0000006B 1D 00 00000016 JMP off_00000081 00000071 03 01 FFFFFFF8 0004 CPTOPSP FFFFFFF8, 0004 00000079 04 03 00000111 CONSTI 00000111 0000007F 0B 20 EQUALII 00000081 07 20 LOGORII 00000083 03 01 FFFFFFFC 0004 CPTOPSP FFFFFFFC, 0004 0000008B 1F 00 00000014 JZ off_0000009F 00000091 03 01 FFFFFFFC 0004 CPTOPSP FFFFFFFC, 0004 00000099 1D 00 00000016 JMP off_000000AF 0000009F 03 01 FFFFFFF8 0004 CPTOPSP FFFFFFF8, 0004 000000A7 04 03 00000222 CONSTI 00000222 000000AD 0B 20 EQUALII 000000AF 07 20 LOGORII 000000B1 1F 00 00000018 JZ off_000000C9 000000B7 1B 00 FFFFFFFC MOVSP FFFFFFFC 000000BD 1D 00 00000026 JMP off_000000E3 000000C3 1D 00 00000006 JMP off_000000C9 000000C9 04 03 00000666 CONSTI 00000666 000000CF 01 01 FFFFFFF8 0004 CPDOWNSP FFFFFFF8, 0004 000000D7 1B 00 FFFFFFFC MOVSP FFFFFFFC 000000DD 1B 00 FFFFFFFC MOVSP FFFFFFFC 000000E3 20 00 RETN |
QUOTE (2_advanced @ Oct 18 2005, 23:46) |
нужно делать экспорт функций и использовать с++ ![]() |
QUOTE (dumbo @ Oct 18 2005, 16:27) |
несколько проверок одного условия. void main() { int i; if (i == 0x123) return; if (i == 0x321) return; if (i == 0x111) return; if (i == 0x222) return; i = 0x666; } |
Neverwinter Script Source |
void main() { int i = 0x333; switch( i ) { case 0x111: case 0x222: case 0x333: case 0x444: return; } i = 0x666; } |
CODE |
00000008 42 000000AB T 000000AB 0000000D 1E 00 00000008 JSR fn_00000015 00000013 20 00 RETN 00000015 02 03 RSADDI 00000017 03 01 FFFFFFFC 0004 CPTOPSP FFFFFFFC, 0004 0000001F 03 01 FFFFFFFC 0004 CPTOPSP FFFFFFFC, 0004 00000027 04 03 00000111 CONSTI 00000111 0000002D 0B 20 EQUALII 0000002F 25 00 0000004E JNZ off_0000007D 00000035 03 01 FFFFFFFC 0004 CPTOPSP FFFFFFFC, 0004 0000003D 04 03 00000222 CONSTI 00000222 00000043 0B 20 EQUALII 00000045 25 00 00000038 JNZ off_0000007D 0000004B 03 01 FFFFFFFC 0004 CPTOPSP FFFFFFFC, 0004 00000053 04 03 00000333 CONSTI 00000333 00000059 0B 20 EQUALII 0000005B 25 00 00000022 JNZ off_0000007D 00000061 03 01 FFFFFFFC 0004 CPTOPSP FFFFFFFC, 0004 00000069 04 03 00000444 CONSTI 00000444 0000006F 0B 20 EQUALII 00000071 25 00 0000000C JNZ off_0000007D 00000077 1D 00 00000012 JMP off_00000089 0000007D 1B 00 FFFFFFF8 MOVSP FFFFFFF8 00000083 1D 00 00000026 JMP off_000000A9 00000089 1B 00 FFFFFFFC MOVSP FFFFFFFC 0000008F 04 03 00000666 CONSTI 00000666 00000095 01 01 FFFFFFF8 0004 CPDOWNSP FFFFFFF8, 0004 0000009D 1B 00 FFFFFFFC MOVSP FFFFFFFC 000000A3 1B 00 FFFFFFFC MOVSP FFFFFFFC 000000A9 20 00 RETN |
QUOTE (Misty Dragon @ Oct 25 2005, 20:08) |
Как раз-таки кэйсы намного тяжелее обрабатываются, нежели простая проверка условия. Намного проще прописывать if() else конструкцию, ибо , в принципе, с этой конструкцией и так все ясно. |
QUOTE (Misty Dragon @ Oct 25 2005, 20:08) |
А вот с как кейсы обрабатываться будут, во много зависит от разработчиков интерпретаторов-компиляторов |
QUOTE (Misty Dragon @ Oct 25 2005, 20:08) |
По поводу использования переменных. Порой лучше пожертвовать некоторым объемом памяти для скорости. |
QUOTE (Misty Dragon @ Oct 25 2005, 20:08) |
И если уж создаете глобальные переменные, то старайтесь их использовать по максимуму ибо у сервера постоянные лики памяти(одна из причин возникновения лагов). |
QUOTE (Misty Dragon @ Oct 25 2005, 20:08) |
Полезно будет также глянуть и растактовку команд процессора. |