Szerző Téma: Controlable NPC  (Megtekintve 12482 alkalommal)

Nem elérhető kurta999

  • 2759
  • Éllő fédisznó
    • Profil megtekintése
Controlable NPC
« Válasz #30 Dátum: 2011. május 22. - 12:35:17 »
0 Show voters
Idézetet írta: Neavorce date=1306060253\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"7123\" data-ipsquote-contentclass=\"forums_Topic
Kicsit sokáig fog tartani: Last Activity: 03/05/2011 07:10 AM :D
 
Az = FAIL.
Picsába, megkell próbálni kiszedni a pluginból, mert amire õ újra feljön..

Koncz_Norbert

  • Vendég
Controlable NPC
« Válasz #31 Dátum: 2011. május 22. - 12:44:50 »
0 Show voters
Ha jövõhétig se jön fel, akkor a hibás kódjából megpróbálom összerakni. ;)
Csak gyorsan siessen mert lejár a szafatossága a programnak. :laugh:

Nem elérhető kurta999

  • 2759
  • Éllő fédisznó
    • Profil megtekintése
Controlable NPC
« Válasz #32 Dátum: 2011. május 28. - 20:54:23 »
0 Show voters
Találtam benen rejtett cuccokat, csak nemtom ezek mire vannak, nekem nemcsináltak semmit.
[pawn]
SetNPCVehicleSiren(NPC:npcid,state);
GetNPCVehicleSiren(NPC:npcid);
SetVehicleUnique( float ertek )
[/pawn]
E: SetVehicleUnique-vel egy egyedi paramétert lehet megadni/lekérni a jármû struktúrának, jelenleg ezt próbálom elérhetõvé tenni.
Megpróbáltam a struktúrás cuccokat kiszedni, addig eljutotttam, hogy átraktam egy másik pluginba, már csak ott a baj, hogy hogyan rendelem hozzá a vID-t a függvényhez.
Ha ez valakit érdekel:
[pawn]
//----------------------------------------------------------
//
//   Based on PointToPoint plugin by: Blacklite and <__Ethan__>
//   Functions copyed for CNPC Plugin. By Alex009 and new adresses (0.3c) found by: m0niSx
//
//----------------------------------------------------------
#include \"math.h\"
#include <stdio.h>
#include <stddef.h>
#include \"windows.h\"
#include \"SDK/amx/amx.h\"
#include \"SDK/plugincommon.h\"
//----------------------------------------------------------
// AMX Default
typedef void (*logprintf_t)(char* format, ...);
logprintf_t logprintf;
void **ppPluginData;
extern void *pAMXFunctions;
#define PLUGIN_FUNCTION static cell AMX_NATIVE_CALL
#pragma pack(1)
struct InCarSync // 0x86 - 0xC5
{
WORD   VehicleId; // 0x86 - 0x0
WORD   KeysLR; // 0x88 - 0x2
WORD   KeysUD; // 0x8A - 0x4
WORD   KeysOther; // 0x8C - 0x6
FLOAT   QuaternionScal; // 0x8E - 0x8
FLOAT   QuaternionX; // 0x92 - 0xC
FLOAT   QuaternionY; // 0x96 - 0x10
FLOAT   QuaternionZ; // 0x9A - 0x14
FLOAT   PosX; // 0x9E - 0x18
FLOAT   PosY; // 0xA2 - 0x1C
FLOAT   PosZ; // 0xA6 - 0x20
FLOAT   VelocityX; // 0xAA - 0x24
FLOAT   VelocityY; // 0xAE - 0x28
FLOAT   VelocityZ; // 0xB2 - 0x2C
FLOAT   Health; // 0xB6 - 0x30
BYTE   PlayerHealth; // 0xBA - 0x34
BYTE   PlayerArmour; // 0xBB - 0x35
BYTE   PlayerWeapon; // 0xBC - 0x36
BYTE   SirenState; // 0xBD - 0x37
BYTE   Unknown2; // 0xBE - 0x38
WORD   TrailerId; // 0xBF - 0x39
FLOAT   Unique; // 0xC1 - 0x3B
};
// Offsets
#define C_SAMP_PLAYERS_OFFSET               0x4
#define C_SAMP_VEHICLES_OFFSET               0x8
//
#define C_PLAYERS_PLAYER_OFFSET               0x7D0
#define C_VEHICLES_VEHICLE_OFFSET            0x1F40
//
// R2
#define R2_C_PLAYER_POS_X_OFFSET            0x0
#define R2_C_PLAYER_POS_Y_OFFSET            0x4
#define R2_C_PLAYER_POS_Z_OFFSET            0x8
#define R2_C_PLAYER_HEALTH_OFFSET            0xC
#define R2_C_PLAYER_ARMOUR_OFFSET            0x10
#define R2_C_PLAYER_ANGLE_OFFSET            0x24
#define R2_C_PLAYER_SYNC_TYPE_OFFSET         0x3E
#define R2_C_PLAYER_FOOT_SYNC_OFFSET         0x42
#define R2_C_PLAYER_INCAR_SYNC_OFFSET         0x86
#define R2_C_PLAYER_PASSANGER_SYNC_OFFSET      0xC5
#define R2_C_PLAYER_AIM_SYNC_OFFSET            0xDD
#define R2_C_PLAYER_AIM_SYNC_STATE_OFFSET      0x275
#define R2_C_PLAYER_STATE_OFFSET            0x281
#define R2_C_PLAYER_IS_STREAMED_OFFSET         0x2BB
#define R2_C_PLAYER_WEAPON_SKILL_OFFSET         0x1A37
#define R2_C_PLAYER_SKIN_OFFSET               0x296 //0x1986
#define R2_C_PLAYER_VEHICLE_ID_OFFSET         0x1A86
#define R2_C_PLAYER_VEHICLE_SEAT_OFFSET         0x1A85
#define R2_C_PLAYER_INTERIOR_OFFSET            0x1A88
#define R2_C_PLAYER_PLAYBACK_FILE            0x1A20
//
#define R2_C_VEHICLE_POS_X_OFFSET            0x0
#define R2_C_VEHICLE_POS_Y_OFFSET            0x4
#define R2_C_VEHICLE_POS_Z_OFFSET            0x8
#define R2_C_VEHICLE_DRIVER_OFFSET            0x6A
#define R2_C_VEHICLE_MODEL_OFFSET            0x82
#define R2_C_VEHICLE_HEALTH_OFFSET            0xA6
// Adresses
#define TEST_ADDR_1                        0x479590
#define TEST_ADDR_2                        0x46E75A
#define R2_DATA_1                        0x50
#define R2_DATA_2                        0x89
// structs address
// R2
#define R2_C_SAMP_STRUCTURE                  0x4F5268
// fuctions address
// R2
#define R2_CLIENT_CONNECT                  0x47C750
#define R2_CLIENT_DISCONNECT               0x47CA50
#define R2_SPAWN_FOR_WORLD                  0x494390
#define R2_KILL_FOR_WORLD                  0x4920E0
#define R2_SET_SPAWN_INFO                  0x491110
#define R2_SET_SKIN                        0x48ABA0
#define R2_SET_WEAPON_SKILL                  0x4899C0
// logging pointers
#define R2_JOIN_POINTER                     0x47C9C4
#define R2_PART_POINTER                     0x47CBC8
#define SAMP_VERSION_032                  1
// main vars
DWORD      c_samp;
DWORD      c_players;
DWORD      c_vehicles;
DWORD      CSampPointer;
// remote procedures pointers
DWORD      CPlayerPosXOffset;
DWORD      CPlayerPosYOffset;
DWORD      CPlayerPosZOffset;
DWORD      CPlayerHealthOffset;
DWORD      CPlayerArmourOffset;
DWORD      CPlayerAngleOffset;
DWORD      CPlayerStateOffset;
DWORD      CPlayerFootSyncOffset;
DWORD      CPlayerInCarSyncOffset;
DWORD      CPlayerPassangerSyncOffset;
DWORD      CPlayerAimSyncOffset;
DWORD      CPlayerAimSyncStateOffset;
DWORD      CPlayerSyncTypeOffset;
DWORD      CPlayerWeaponSkillOffset;
DWORD      CPlayerSkinOffset;
DWORD      CPlayerInteriorOffset;
DWORD      CPlayerIsStreamedOffset;
DWORD      CPlayerVehicleIdOffset;
DWORD      CPlayerVehicleSeatOffset;
DWORD      CVehiclePosXOffset;
DWORD      CVehiclePosYOffset;
DWORD      CVehiclePosZOffset;
DWORD      CVehicleDriverOffset;
DWORD      CVehicleModelOffset;
DWORD      CVehicleHealthOffset;
DWORD   c_player_struct;
bool Unlock(void *address, int len)
{
#ifdef WIN32
   DWORD
      oldp;
   // Shut up the warnings :D
   return !!VirtualProtect(address, len, PAGE_EXECUTE_READWRITE, &oldp);
#else
   return !mprotect((void*)(((int)address / PAGESIZE) * PAGESIZE), PAGESIZE, PROT_WRITE | PROT_READ | PROT_EXEC);
#endif
}
#define POINTER_TO_MEMBER(m,n,o) temp = n, m = *(o *)&temp
void HooksInstall(int version)
{
// addr
void *temp;
switch(version)
{
   case SAMP_VERSION_032:
   {
      /*
      POINTER_TO_MEMBER(ClientConnectPointer,(void *)(R2_CLIENT_CONNECT),f_ClientConnect);
      POINTER_TO_MEMBER(ClientDisconnectPointer,(void *)(R2_CLIENT_DISCONNECT),f_ClientDisconnect);
      POINTER_TO_MEMBER(SpawnForWorldPointer,(void *)(R2_SPAWN_FOR_WORLD),f_SpawnForWorld);
      POINTER_TO_MEMBER(SetSpawnInfoPointer,(void *)(R2_SET_SPAWN_INFO),f_SetSpawnInfoPointer);
      POINTER_TO_MEMBER(SetSkinPointer,(void *)(R2_SET_SKIN),f_SetSkinPointer);
      POINTER_TO_MEMBER(KillForWorldPointer,(void *)(R2_KILL_FOR_WORLD),f_KillForWorld);
      POINTER_TO_MEMBER(SetWeaponSkillPointer,(void *)(R2_SET_WEAPON_SKILL),f_SetWeaponSkill);
      */
      POINTER_TO_MEMBER(CPlayerPosXOffset,(void *)(R2_C_PLAYER_POS_X_OFFSET),DWORD);
      POINTER_TO_MEMBER(CPlayerPosYOffset,(void *)(R2_C_PLAYER_POS_Y_OFFSET),DWORD);
      POINTER_TO_MEMBER(CPlayerPosZOffset,(void *)(R2_C_PLAYER_POS_Z_OFFSET),DWORD);
      POINTER_TO_MEMBER(CPlayerHealthOffset,(void *)(R2_C_PLAYER_HEALTH_OFFSET),DWORD);
      POINTER_TO_MEMBER(CPlayerArmourOffset,(void *)(R2_C_PLAYER_ARMOUR_OFFSET),DWORD);
      POINTER_TO_MEMBER(CPlayerAngleOffset,(void *)(R2_C_PLAYER_ANGLE_OFFSET),DWORD);
      POINTER_TO_MEMBER(CPlayerStateOffset,(void *)(R2_C_PLAYER_STATE_OFFSET),DWORD);
      POINTER_TO_MEMBER(CPlayerFootSyncOffset,(void *)(R2_C_PLAYER_FOOT_SYNC_OFFSET),DWORD);
      POINTER_TO_MEMBER(CPlayerInCarSyncOffset,(void *)(R2_C_PLAYER_INCAR_SYNC_OFFSET),DWORD);
      POINTER_TO_MEMBER(CPlayerPassangerSyncOffset,(void *)(R2_C_PLAYER_PASSANGER_SYNC_OFFSET),DWORD);
      POINTER_TO_MEMBER(CPlayerAimSyncOffset,(void *)(R2_C_PLAYER_AIM_SYNC_OFFSET),DWORD);
      POINTER_TO_MEMBER(CPlayerAimSyncStateOffset,(void *)(R2_C_PLAYER_AIM_SYNC_STATE_OFFSET),DWORD);
      POINTER_TO_MEMBER(CPlayerSyncTypeOffset,(void *)(R2_C_PLAYER_SYNC_TYPE_OFFSET),DWORD);
      POINTER_TO_MEMBER(CPlayerWeaponSkillOffset,(void *)(R2_C_PLAYER_WEAPON_SKILL_OFFSET),DWORD);
      POINTER_TO_MEMBER(CPlayerSkinOffset,(void *)(R2_C_PLAYER_SKIN_OFFSET),DWORD);
      POINTER_TO_MEMBER(CPlayerInteriorOffset,(void *)(R2_C_PLAYER_INTERIOR_OFFSET),DWORD);
      POINTER_TO_MEMBER(CPlayerIsStreamedOffset,(void *)(R2_C_PLAYER_IS_STREAMED_OFFSET),DWORD);
      POINTER_TO_MEMBER(CPlayerVehicleIdOffset,(void *)(R2_C_PLAYER_VEHICLE_ID_OFFSET),DWORD);
      POINTER_TO_MEMBER(CPlayerVehicleSeatOffset,(void *)(R2_C_PLAYER_VEHICLE_SEAT_OFFSET),DWORD);
      POINTER_TO_MEMBER(CVehiclePosXOffset,(void *)(R2_C_VEHICLE_POS_X_OFFSET),DWORD);
      POINTER_TO_MEMBER(CVehiclePosYOffset,(void *)(R2_C_VEHICLE_POS_Y_OFFSET),DWORD);
      POINTER_TO_MEMBER(CVehiclePosZOffset,(void *)(R2_C_VEHICLE_POS_Z_OFFSET),DWORD);
      POINTER_TO_MEMBER(CVehicleDriverOffset,(void *)(R2_C_VEHICLE_DRIVER_OFFSET),DWORD);
      POINTER_TO_MEMBER(CVehicleModelOffset,(void *)(R2_C_VEHICLE_MODEL_OFFSET),DWORD);
      POINTER_TO_MEMBER(CVehicleHealthOffset,(void *)(R2_C_VEHICLE_HEALTH_OFFSET),DWORD);
      /*
      POINTER_TO_MEMBER(LoggingJoinPointer,(void *)(R2_JOIN_POINTER),DWORD);
      POINTER_TO_MEMBER(LoggingPartPointer,(void *)(R2_PART_POINTER),DWORD);
      */
      break;
   }
}
}
// Functions
void SetVehicleQuaternion(float x,float y,float z,float s)
{
*(FLOAT*)(c_player_struct + CPlayerInCarSyncOffset + offsetof(InCarSync,QuaternionX)) = x;
*(FLOAT*)(c_player_struct + CPlayerInCarSyncOffset + offsetof(InCarSync,QuaternionY)) = y;
*(FLOAT*)(c_player_struct + CPlayerInCarSyncOffset + offsetof(InCarSync,QuaternionZ)) = z;
*(FLOAT*)(c_player_struct + CPlayerInCarSyncOffset + offsetof(InCarSync,QuaternionScal)) = s;
}
PLUGIN_EXPORT unsigned int PLUGIN_CALL Supports()
{
return SUPPORTS_VERSION | SUPPORTS_AMX_NATIVES;
}
PLUGIN_EXPORT bool PLUGIN_CALL Load( void **ppData )
{
Unlock((void*)0x401000,0xF0844);
pAMXFunctions = ppData[PLUGIN_DATA_AMX_EXPORTS];
logprintf = (logprintf_t)ppData[PLUGIN_DATA_LOGPRINTF];
logprintf( \" PointToPoint Plugin Loaded.\" );
return true;
}
PLUGIN_EXPORT void PLUGIN_CALL Unload( )
{
logprintf( \"PointToPoint Plugin Unloaded.\" );
}
//----------------------------------------------------------
PLUGIN_FUNCTION n_SetVehicleQuaternion( AMX* amx, cell* params )
{
SetVehicleQuaternion(amx_ctof(params[1]), amx_ctof(params[2]), amx_ctof(params[3]), amx_ctof(params[4]));
return 1;
}
//----------------------------------------------------------
AMX_NATIVE_INFO HelloWorldNatives[ ] =
{
{ \"SetVehicleQuaternion\",      n_SetVehicleQuaternion },
{ 0,               0 }
};
PLUGIN_EXPORT int PLUGIN_CALL AmxLoad( AMX *amx )
{
c_samp = *(DWORD*)(CSampPointer);
c_players = *(DWORD*)(c_samp + C_SAMP_PLAYERS_OFFSET);
c_vehicles = *(DWORD*)(c_samp + C_SAMP_VEHICLES_OFFSET);
return amx_Register( amx, HelloWorldNatives, -1 );
}
PLUGIN_EXPORT int PLUGIN_CALL AmxUnload( AMX *amx )
{
return AMX_ERR_NONE;
}
[/pawn]
« Utoljára szerkesztve: 2011. május 28. - 22:23:11 írta kurta999 »

Koncz_Norbert

  • Vendég
Controlable NPC
« Válasz #33 Dátum: 2011. május 28. - 21:03:21 »
0 Show voters
Gondolom olvastad az elsõ témámat a hivatalos fórumon. :D
Amúgy meg egy elég jó hasznos függvény a SetNPCVehicleSiren meg a GotoPlayer is. ;)

Nem elérhető kurta999

  • 2759
  • Éllő fédisznó
    • Profil megtekintése
Controlable NPC
« Válasz #34 Dátum: 2011. május 28. - 21:06:31 »
0 Show voters
Idézetet írta: Neavorce date=1306609401\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"7123\" data-ipsquote-contentclass=\"forums_Topic
Gondolom olvastad az elsõ témámat a hivatalos fórumon. :D
Amúgy meg egy elég jó hasznos függvény a SetNPCVehicleSiren meg a GotoPlayer is. ;)
 
Nem :D
Adj linket arról, mert nemtom mirõl beszélsz.
Kiszedem belõle a CreateNPCPlayer-t és egy másik névvel felregizek és felrakom, hátha valaki felújítja xD
Kiszedést úgy éretm, hogy a pluginból eltávolítom, de annak ellenére még vissza fog lehetni rakni.

Koncz_Norbert

  • Vendég
Controlable NPC
« Válasz #35 Dátum: 2011. május 28. - 21:16:18 »
0 Show voters
Tess: http://forum.sa-mp.com/showthread.php?t=257876
Vannak benne angol failok de legalább megértették.
Csak nekem kell beimportálni .sln fájlba hogy plugin legyen. Nem köcsögök? :(
GL. De az IP ugyanaz szóval tökmindegy. :D
Úgyse fogják kiadni 0.3c-re, pláne hogy tiltott. De eltûnt a topicja is. :-[
Én megpróbálkozok de még készítem a object streameremet amit még azse tudom hogy publikáljak :laugh:

Nem elérhető kurta999

  • 2759
  • Éllő fédisznó
    • Profil megtekintése
Controlable NPC
« Válasz #36 Dátum: 2011. május 28. - 23:15:28 »
0 Show voters
Azér tûnt el, mert Kye törölte.
Amúgy engem ez boldogított kicsit meg: http://code.google.com/p/samp-alex009-projects/
Ott lent nézz jól körül mi van. Holnap kirakom az official fórumra má télleg :D Remélem ezt nem törlik, de szerintem rögtön bannolnak vele eggyütt..

Koncz_Norbert

  • Vendég
Controlable NPC
« Válasz #37 Dátum: 2011. május 28. - 23:25:53 »
0 Show voters
Idézetet írta: kurta999 date=1306617328\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"7123\" data-ipsquote-contentclass=\"forums_Topic
Azér tûnt el, mert Kye törölte.
Amúgy engem ez boldogított kicsit meg: http://code.google.com/p/samp-alex009-projects/
Ott lent nézz jól körül mi van. Holnap kirakom az official fórumra má télleg :D Remélem ezt nem törlik, de szerintem rögtön bannolnak vele eggyütt..
 
Erre én is rájöttem. :D
Amúgy nem értem mire gondolsz. Hooks module SA-MP 0.1-ra?

Nem elérhető kurta999

  • 2759
  • Éllő fédisznó
    • Profil megtekintése
Controlable NPC
« Válasz #38 Dátum: 2011. május 29. - 09:26:13 »
0 Show voters
Felette xD
Alex már dolgozik a cuccon, elérhetõ a 0.3c R1-es verzió.
http://controllable-npc.googlecode.com/svn/trunk/
Letöltés:
www.nm-ss.tarhely.biz/DownloadSVN.exe -vel.
Beleírod a fenti linket, kiválasztod hova mentse, és tölti is.
« Utoljára szerkesztve: 2011. május 29. - 12:36:56 írta kurta999 »

Koncz_Norbert

  • Vendég
Controlable NPC
« Válasz #39 Dátum: 2011. május 29. - 21:43:19 »
0 Show voters
:(
Én már hozzákezdtem. Mindegy folytatom. :D

Controlable NPC
« Válasz #40 Dátum: 2011. május 29. - 22:23:06 »
0 Show voters
a hooks plugin mit takar?

Nem elérhető kurta999

  • 2759
  • Éllő fédisznó
    • Profil megtekintése
Controlable NPC
« Válasz #41 Dátum: 2011. május 30. - 19:29:11 »
0 Show voters
Idézetet írta: TengeriMalac date=1306700586\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"7123\" data-ipsquote-contentclass=\"forums_Topic
a hooks plugin mit takar?
 
Azzal hívja meg a callackokat, OnPlayerSpawn, Death, stb...

Nem elérhető Sramm

  • 596
    • Profil megtekintése
Controlable NPC
« Válasz #42 Dátum: 2011. június 27. - 12:14:00 »
0 Show voters
is_z_map mit takar?

Nem elérhető kurta999

  • 2759
  • Éllő fédisznó
    • Profil megtekintése
Controlable NPC
« Válasz #43 Dátum: 2011. június 27. - 19:10:32 »
0 Show voters
Idézetet írta: Sramm date=1309169640\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"7123\" data-ipsquote-contentclass=\"forums_Topic
is_z_map mit takar?
 
A ZMap szerint-e mûködjön a dolog.
ZMap = Legmagasabb pont.
Pl.: Megvan h az NPC elmenjen egy megadott pontra, és közbe vannak házak is meg dombok, mindenféle szarság. Természetesen ha légvonalba fog menni, akkor ez azt fogja csinálni, hogy ha odaér a házhoz, akkor nem átmegy a házon, hanem felteszi õt a ház tetejére, amikor már kiér a ház szélire, akkor meg lerakja õt az útra, vagy ami ottvan. Tehát midnig a legmagasabb pontra teszi. Remélem érted :D

Nem elérhető Sramm

  • 596
    • Profil megtekintése
Controlable NPC
« Válasz #44 Dátum: 2011. június 28. - 11:32:58 »
0 Show voters
kb. :S És akkor most mit írjak oda? 1?

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal