Crash no pawn - DeathSync - 12/10/2021
Alguém sabe me falar onde pode esse código esta gerando crash no pawn, e me explicar o porque disso?
Código: timer MoveZombie[100](zombieid, newkeys)
{
new Float:xa, Float:ya, Float:za, Float:health;
if(FCNPC_IsDead(zombieid)) return 1;
foreach(new i : Player)
{
GetPlayerPos(i, xa, ya, za);
if(IsPlayerInRangeOfPoint(zombieid, 1, xa, ya, za))
{
HumanFound[zombieid] = 2;
FCNPC_MeleeAttack(zombieid,500);
GetPlayerHealth(i, health);
break;
}
else if(IsPlayerInRangeOfPoint(zombieid,ZOMBIE_RANGE / 4, xa, ya, za))
{
if(GetPlayerSpecialAction(zombieid) == SPECIAL_ACTION_DUCK)
{
if(HumanFound[zombieid] == 2)
{
FCNPC_StopAttack(zombieid);
}
HumanFound[zombieid] = 1;
FCNPC_GoTo(zombieid, xa, ya, za, FCNPC_MOVE_TYPE_RUN);
SetTimer("ResetDetectRange", 5000, false);
}
break;
}
else if(IsPlayerInRangeOfPoint(zombieid, ZOMBIE_RANGE / 2, xa, ya, za))
{
if(HumanFound[zombieid] == 2)
{
FCNPC_StopAttack(zombieid);
}
HumanFound[zombieid] = 1;
FCNPC_GoTo(zombieid, xa, ya, za, FCNPC_MOVE_TYPE_RUN);
SetTimer("ResetDetectRange", 5000, false);
break;
}
else if(IsPlayerInRangeOfPoint(zombieid, ZOMBIE_RANGE, xa, ya, za))
{
if(HumanFound[zombieid] == 2)
{
FCNPC_StopAttack(zombieid);
}
HumanFound[zombieid] = 1;
FCNPC_GoToPlayerEx(zombieid, i, 5, 5, FCNPC_MOVE_TYPE_RUN);
SetTimer("ResetDetectRange", 5000, false);
break;
}
else if(IsPlayerInRangeOfPoint(zombieid, ZOMBIE_RANGE * 2 , xa, ya, za))
{
if(newkeys & KEY_SPRINT)
{
GetPlayerPos(zombieid, xa, ya, za);
if(HumanFound[zombieid] == 2)
{
FCNPC_StopAttack(zombieid);
}
HumanFound[zombieid] = 1;
FCNPC_GoToPlayerEx(zombieid, i, 5, 5, FCNPC_MOVE_TYPE_RUN);
SetTimer("ResetDetectRange", 5000, false);
break;
}
}
else if(IsPlayerInRangeOfPoint(zombieid,ZOMBIE_RANGE * 5, xa, ya, za))
{
if(GetPlayerWeapon(i) == 22 && GetPlayerWeapon(i) >= 23 && GetPlayerWeapon(i) <= 38)
{
GetPlayerPos(zombieid, xa, ya, za);
if(HumanFound[zombieid] == 2)
{
FCNPC_StopAttack(zombieid);
}
HumanFound[zombieid] = 1;
FCNPC_GoToPlayerEx(zombieid, i, 5, 5, FCNPC_MOVE_TYPE_RUN);
SetTimer("ResetDetectRange", 5000, false);
break;
}
}
else
{
HumanFound[zombieid] = 0;
new Float:x, Float:y, Float:z;
GetPlayerPos(zombieid, x, y, z);
FCNPC_StopAttack(zombieid);
if(HumanFound[zombieid] == 0)
{
new pos = random(4);
if(pos == 0) { x = x + 100.0; }
else if(pos == 1) { x = x - 100.0; }
else if(pos == 2) { y = y + 100.0; }
else if(pos == 3) { y = y - 100.0; }
FCNPC_SetKeys(zombieid, 0, 0, 0);
FCNPC_GoTo(zombieid, x, y, z, FCNPC_MOVE_TYPE_WALK);
}
}
}
return 1;
}
RE: Crash no pawn - xbruno1000x - 12/10/2021
https://github.com/pawn-lang/compiler
Use o Pawn Community Compiler. Ele resolve alguns problemas, inclusive esses crashs no pawno.
RE: Crash no pawn - DeathSync - 12/10/2021
Eu já tentei, o zeex da erro na include e os demais crasha
RE: Crash no pawn - xbruno1000x - 13/10/2021
"#include <YSI\y_timers>" foi inclusa no gamemode?
RE: Crash no pawn - DeathSync - 13/10/2021
Estou sim, pelo que vi o motivo é esse codigo, já procurei em todo FS, isolei cada parte, função etc, só não consigo identificar o erro.
Ví que ele tá gerando o amx, só que quando abro o servidor, me retorna esse log de crash do FCNPC
Código: =========================== FCNPC Exception Handler ============================
Address: 0x401696
Registers:
EAX: 0x2d96900 - EBX: 0x4bbb68 - ECX: 0x0 - EDX: 0x64a884d8
ESI: 0x2d96900 - EDI: 0x19fdd8 - EBP: 0x19fdb8 - ESP: 0x19fd4c
Stack:
0x0: 0x401726 - 0x4: 0x2d96900 - 0x8: 0x19fd68 - 0xC: 0x19fdd8 - 0x10: 0x2d96900 - 0x14: 0x19fdb8
0x18: 0x4bbb68 - 0x1C: 0x19fd80 - 0x20: 0x43fffb0
Information:
System: Windows
SA-MP: 0.3.DL R1
FCNPC: 2.0.3
Functions:
FUNC_CPlayerPool__DeletePlayer: 0x466550
FUNC_CPlayer__Kill: 0x485020
FUNC_CPlayer__EnterVehicle: 0x485670
FUNC_CPlayer__ExitVehicle: 0x485790
FUNC_CPlayer__SpawnForWorld: 0x487730
FUNC_GetVehicleModelInfo: 0x4892a0
FUNC_CConsole__GetIntVariable: 0x490c80
FUNC_ClientJoin_RPC: 0x497ef0
Pointers:
VAR_ServerAuthentication: 0x4fc470
VAR_NetVersion: 0xfde
Offsets:
OFFSET_RemoteSystemManager: 0x33c
OFFSET_RemoteSystemSize: 0xcb8
OFFSET_RemoteSystem__ConnectMode: 0xcb0
OFFSET_RemoteSystem__Unknown: 0xcb5
Callbacks:
FUNC_CGameMode__OnPlayerGiveDamage: 0x46f050
FUNC_CGameMode__OnPlayerTakeDamage: 0x46efd0
FUNC_CGameMode__OnPlayerWeaponShot: 0x46f640
FUNC_CGameMode__OnPlayerStreamIn: 0x46ebc0
FUNC_CGameMode__OnPlayerStreamOut: 0x46ec30
FUNC_CGameMode__OnGameModeExit: 0x46da90
=========================== FCNPC Exception Handler ============================
Agora reparei que o erro possivelmente está nessa parte
Código: /*if(HumanFound[zombieid] == 0)
{
new pos = random(4);
if(pos == 0) { x = x + 100.0; }
else if(pos == 1) { x = x - 100.0; }
else if(pos == 2) { y = y + 100.0; }
else if(pos == 3) { y = y - 100.0; }
FCNPC_SetKeys(zombieid, 0, 0, 0);
FCNPC_GoTo(zombieid, x, y, z, FCNPC_MOVE_TYPE_WALK);
}*/
que me retorna
Código: pawno\include\fcnpc.inc(409) : error 001: expected token: "-identifier-", but found "("
pawno\include\fcnpc.inc(448) : warning 235: public function lacks forward declaration (symbol "fcnpc0_OnGameModeInit")
pawno\include\fcnpc.inc(450) : error 017: undefined symbol "Iter_Clear"
pawno\include\fcnpc.inc(450) : warning 215: expression has no effect
pawno\include\fcnpc.inc(450) : error 001: expected token: ";", but found ")"
pawno\include\fcnpc.inc(450) : error 029: invalid expression, assumed zero
pawno\include\fcnpc.inc(450) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
5 Errors.
RE: Crash no pawn - k2bi_YT - 13/10/2021
Bom, dei uma olhada no seu code, pelo que eu entendi, sua funcao MoveZombie[100](zombieid, newkeys), no caso esse 'zombieid' se refere ao NPC? Caso seja isso, você não está usando corretamente as funções IsPlayerInRangeOfPoint & GetPlayerPos & GetPlayerSpecialAction
Porque essas funções se refere aos real players, caso use, por exemplo, GetPlayerSpecialAction(zombieid), ele ira usar o ID do zombieid como ID do Player Real:
Exemplo:
Código PHP: MoveZombie[100](zombieid, newkeys)
// zombieid será o n°8 no caso...
GetPlayerSpecialAction(zombieid) //Ele ira pegar a ação do jogador ID:8 e não do NPC ID:8
//Uso Correto é:
FCNPC_GetSpecialAction(npcid)
Espero que tenha compreendido. Talvez pode conter algum erro, porém já está sendo solucionado um bug que poderia atrapalhar por mal uso das funções.
RE: Crash no pawn - DeathSync - 13/10/2021
Não solucionou o problema, mas como você falou, já evita problemas futuros.
RE: Crash no pawn - k2bi_YT - 13/10/2021
Código PHP: pawno\include\fcnpc.inc(409) : error 001: expected token: "-identifier-", but found "(" pawno\include\fcnpc.inc(448) : warning 235: public function lacks forward declaration (symbol "fcnpc0_OnGameModeInit") pawno\include\fcnpc.inc(450) : error 017: undefined symbol "Iter_Clear" pawno\include\fcnpc.inc(450) : warning 215: expression has no effect pawno\include\fcnpc.inc(450) : error 001: expected token: ";", but found ")" pawno\include\fcnpc.inc(450) : error 029: invalid expression, assumed zero pawno\include\fcnpc.inc(450) : fatal error 107: too many error messages on one line
Isso é erro na include, tente atualizar ela
https://github.com/ziggi/FCNPC/releases/tag/v2.0.3
RE: Crash no pawn - DeathSync - 13/10/2021
Bom, não sei oque fiz, mas o erro sumiu e compilou de boas, mas com isso o FS tá desabilitando o textdrawn click kkkkkkkkkkkkk
|