[Umfrage] "CNPC". Weiterentwicklung gewünscht?

  • Soll es eine 0.3e Version von CNPC geben? 51

    1. Ja (48) 94%
    2. Nein (3) 6%

    Soo wie es der Titel schon vermuten lässt, habe ich eine Person gefunden, welche sich bereit erklären würde, das Plugin "CNPC" (controllable NPC) weiter zu entwickeln. Hierbei hat er micht darum gebeten, dass ich zunächst erstmal fragen sollte, ob denn eine 0.3e Version überhaupt gewünscht wird.













    Spoiler anzeigen
    Smalltalk als passenden Bereich durch Dog bestätigt

    • Offizieller Beitrag

    Aufjeden Fall, damit könnte man ganz neue Möglichkeiten in SAMP (wieder) eröffnen


    „Nicht das, was du nicht weißt, bringt dich in Schwierigkeiten, sondern dass, was du sicher zu wissen glaubst, obwohl es gar nicht wahr ist.“
    Mark Twain

    ---
    ICH BIN NUR HIER UM LEUTE ANZUSCHREIEN

  • Hier mal die Include dazu, dann kannst du dir mal ein Bild davon machen

    Die Include
    //[...] unerheblich dafür

    Die Include
    //
    // Defines
    //
    #define MAX_NPCS 500
    #define MAX_NODES 100

    Die Include
    #define NPC_STATE_REQUEST_CLASS 0
    #define NPC_STATE_ONFOOT 1
    #define NPC_STATE_DRIVER 2
    #define NPC_STATE_PASSANGER 3
    #define NPC_STATE_DEATH 4
    #define NPC_STATE_PLAYBACK 5

    Die Include
    #define PLAYER_RECORDING_TYPE_NONE 0
    #define PLAYER_RECORDING_TYPE_DRIVER 1
    #define PLAYER_RECORDING_TYPE_ONFOOT 2

    Die Include
    #define NPC_RECORD_END_REASON_END 1
    #define NPC_RECORD_END_REASON_DEATH 2
    #define NPC_RECORD_END_REASON_STOP 3
    #define NPC_RECORD_END_REASON_DESTROY 4

    Die Include
    //
    // Natives
    //

    Die Include
    // core
    native CreateNPC(npcid,npcname[]);
    native IsValidNPC(npcid);
    native DestroyNPC(npcid);
    native KillNPC(npcid);
    native SpawnNPC(npcid);
    native PutNPCInVehicle(npcid,vehicleid,seat);
    native StopNPC(npcid);
    native SetNPCImpregnable(npcid,istate);
    native IsNPCImpregnable(npcid);
    native GetNPCState(npcid);
    native ToogleVisualDeath(tstate);
    native DisableJoinPartLogging();
    native FindLastFreeSlot();
    // on foot controlls
    native SetNPCPos(npcid,Float:X,Float:Y,Float:Z);
    native GetNPCPos(npcid,&Float:X,&Float:Y,&Float:Z);
    native SetNPCFacingAngle(npcid,Float:angle);
    native Float:GetNPCFacingAngle(npcid);
    native SetNPCVelocity(npcid,Float:X,Float:Y,Float:Z);
    native GetNPCVelocity(npcid,&Float:X,&Float:Y,&Float:Z);
    native SetNPCKeys(npcid,updown,leftright,keys);
    native GetNPCKeys(npcid,&updown,&leftright,&keys);
    native SetNPCSkin(npcid,skin);
    native GetNPCSkin(npcid);
    native SetNPCInterior(npcid,interior);
    native GetNPCInterior(npcid);
    native SetNPCSpecialAction(npcid,action);
    native GetNPCSpecialAction(npcid);
    native SetNPCWeapon(npcid,weaponid);
    native GetNPCWeapon(npcid);
    native SetNPCWeaponSkillLevel(npcid,weapontype,level);
    native GetNPCWeaponSkillLevel(npcid,weapontype);
    native SetNPCHealth(npcid,Float:amount);
    native Float:GetNPCHealth(npcid);
    native SetNPCArmour(npcid,Float:amount);
    native Float:GetNPCArmour(npcid);
    native SetNPCSurfing(npcid,Float:X,Float:Y,Float:Z);
    native GetNPCSurfing(npcid,&Float:X,&Float:Y,&Float:Z);
    native SetNPCSurfingVehicle(npcid,vehicleid);
    native GetNPCSurfingVehicle(npcid);
    // aim controls
    native SetNPCCameraPos(npcid,Float:X,Float:Y,Float:Z);
    native GetNPCCameraPos(npcid,&Float:X,&Float:Y,&Float:Z);
    native SetNPCCameraFrontVector(npcid,Float:X,Float:Y,Float:Z);
    native GetNPCCameraFrontVector(npcid,&Float:X,&Float:Y,&Float:Z);
    native SetNPCCameraMode(npcid,mode);
    native GetNPCCameraMode(npcid);
    native SetNPCWeaponState(npcid,wstate);
    native GetNPCWeaponState(npcid);
    // driver controls
    native SetNPCVehiclePos(npcid,Float:X,Float:Y,Float:Z);
    native GetNPCVehiclePos(npcid,&Float:X,&Float:Y,&Float:Z);
    native SetNPCVehicleQuaternion(npcid,Float:X,Float:Y,Float:Z,Float:Scal);
    native GetNPCVehicleQuaternion(npcid,&Float:X,&Float:Y,&Float:Z,&Float:Scal);
    native SetNPCVehicleVelocity(npcid,Float:X,Float:Y,Float:Z);
    native GetNPCVehicleVelocity(npcid,&Float:X,&Float:Y,&Float:Z);
    native SetNPCVehicleKeys(npcid,updown,leftright,keys);
    native GetNPCVehicleKeys(npcid,&updown,&leftright,&keys);
    native SetNPCVehicleSiren(npcid,vstate);
    native GetNPCVehicleSiren(npcid);
    native SetNPCVehicleWeapon(npcid,weaponid);
    native GetNPCVehicleWeapon(npcid);
    // standart actions
    native NPC_WalkTo(npcid,Float:X,Float:Y,Float:Z,is_z_map);
    native NPC_RunTo(npcid,Float:X,Float:Y,Float:Z,is_z_map);
    native NPC_SprintTo(npcid,Float:X,Float:Y,Float:Z,is_z_map);
    native NPC_LookAt(npcid,Float:X,Float:Y,Float:Z);
    native NPC_AimAt(npcid,Float:X,Float:Y,Float:Z);
    native NPC_ShotAt(npcid,Float:X,Float:Y,Float:Z);
    native NPC_DriveTo(npcid,Float:X,Float:Y,Float:Z,Float:speed,is_z_map);
    // damage config
    native SetWeaponDamageForNPC(weaponid,Float:damage);
    native SetWeaponReloadTimeForNPC(weaponid,mstime);
    // .rec playbacks
    native StartRecordingPlayback(npcid,name[]);
    native PauseRecordingPlayback(npcid);
    native ContinueRecordingPlayback(npcid);
    native StopRecordingPlayback(npcid);
    // GTA SA paths
    native Node:OpenNode(name[]);
    native CloseNode(Node:nodeid);
    native GetNodeHeader(Node:nodeid,&nodes,&vehicle_nodes,&ped_nodes,&navi_nodes);
    native SetNodePoint(Node:nodeid,pointid);
    native GetNodePoint(Node:nodeid);
    native GetNodePointPos(Node:nodeid,&Float:X,&Float:Y,&Float:Z);
    native GetNodePointLinkId(Node:nodeid);
    native GetNodePointAreaId(Node:nodeid);
    native GetNodePointWidth(Node:nodeid);
    native GetNodePointLinkCount(Node:pointid);
    native GetNodePointTrafficLevel(Node:nodeid);
    native IsNodePointRoadBlock(Node:nodeid);
    native IsNodePointBoats(Node:nodeid);
    native IsNodePointEmergency(Node:nodeid);
    native IsNodePointNotHighway(Node:nodeid);
    native IsNodePointSpawn(Node:nodeid);
    native IsNodePointRoadBlock1(Node:nodeid);
    native IsNodePointParking(Node:nodeid);
    native IsNodePointRoadBlock2(Node:nodeid);
    native GetNodePointType(Node:nodeid);
    native SetNodeLink(Node:nodeid,linkid);
    native GetNodeLinkAreaId(Node:nodeid);
    native GetNodeLinkNodeId(Node:nodeid);
    // ZMap
    native ZMap_Init(mapname[]);
    native Float:ZMap_GetZForCoords(Float:X,Float:Y);
    // Rolls
    native Float:ConvertRollToGrad(Float:roll);
    native Float:ConvertGradToRoll(Float:grad);

    Die Include
    //
    // Callbacks
    //
    forward OnNPCGetDamage(npcid,playerid,Float:health_loss,bodypart);
    forward OnRecordingPlaybackEnd(npcid,reason);
    forward OnNPCMovingComplete(npcid);
    forward OnNPCSpawn(npcid);
    forward OnNPCDeath(npcid,killerid,reason);

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • habe ich eine Person gefunden


    Genau.
    Und ich weiß von früher, dass CNPC bzw. Custom-NPC verboten ist bzw. wenn ein Server dieses Plugin nutzt, ist es auf der Sa-MP Blacklist.


    Weiß einer ob das heute immer noch so wäre/ist?


    Wenn nicht, dann würde ich es gerne weiterentwickeln :thumbup:

    Miete mich (nicht) :love:

  • Und ich weiß von früher, dass CNPC bzw. Custom-NPC verboten ist bzw. wenn ein Server dieses Plugin nutzt, ist es auf der Sa-MP Blacklist.


    Server die das Plugin genutzt haben, wurden nicht auf die Blacklist gesetzt,
    nur wenn man damit Spieler gefaked hat oder die Slotsperre gelöst hat,
    wurde der Server von der Internetliste genommen.

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Server die das Plugin genutzt haben, wurden nicht auf die Blacklist gesetzt,
    nur wenn man damit Spieler gefaked hat oder die Slotsperre gelöst hat,
    wurde der Server von der Internetliste genommen.


    Stimmt, der Text sagt alles.
    http://forum.sa-mp.com/showthread.php?p=1094299



    Würdest du das schaffen, wärst du echt ein King!


    Ja klar.
    Aber aktuell habe ich noch für BreakDown nen Kundenauftrag zu erledigen.
    Und mein GTA: MyLife Projekt soll auch mal fertig werden.


    Ich teile mir meine Zeit auf.


    //edit:
    Ich habe es jetzt soweit gebracht, dass die Scripte auf Visual C++ 2010 Express laufen und per Linux kompilierbar sind.
    Mein Server sagt bisher folgendes im Log.
    breadfish.de/wcf/attachment/4143/
    Jetzt muss ich per PAWN erst einmal ein Script haben, was ich testen kann für die NPC´s.

    Miete mich (nicht) :love:

    Einmal editiert, zuletzt von Bubelbub ()

  • solltest du die Funktion rausnehmen die player faken lässt ;)

    Genau.



    Was .. genau macht das Programm?


    Das Programm erlaubt "richtige" Bots.
    Du musst diese nicht vorher aufnehmen, sondern kannst diese direkt Ingame "behandeln".


    Bsp. spawnst einfach mal eben einen.
    Dann kannst ihn wohin laufen lassen per NPC_GoTo(npc, x, y, z=..) und schon läuft er dahin.




    So und für alle anderen mal ein Status.
    Hier sind zwei Bilder, die das ganze näher erklären.
    breadfish.de/wcf/attachment/4148/ und breadfish.de/wcf/attachment/4149/


    Auf 0.3c hatte ich das ganze noch selber getestet, es funktioniert.
    Bei 0.3e sagt der Debugger dann total falsche Werte etc.
    Grund? Die Adressenverschiebung.
    Ich hatte vorhin jetzt mal ne Stunde programmiert.
    Also ich denke das ist fixbar :thumbup:


    In dieser Stunde habe ich halt das ganze zum Debuggen gemacht etc.
    Nachdem man die neuen Adressen gefunden hat, kann man das Script so einfach weiter benutzen.
    Die Bot Variablen wurden im großen und ganzen ja nicht verändert von 0.3c zu 0.3e.



    Alles im allen hoffe ich, dass diese Art Projekt nicht allzu viel Zeit beansprucht.
    Morgen ist erst einmal für BreakDown das UCP dran, Dienstag dann nochmal GTA: MyLife und Mittwoch wollte ich dann noch einmal hier gucken was los ist.
    In der Zeit sind hier vielleicht manche anderen Programmierer gewesen und haben schon einmal ein paar Adressen gefunden (von ca. 30).



    P.S.: Gibt es irgendwo nen Samp Server Version Switcher? Damit ich schnell von 0.3c zu 0.3e switchen kann? :D (siehe morgen - Showroom)

    Miete mich (nicht) :love:

    Einmal editiert, zuletzt von Bubelbub ()

  • du bekommst das schon hin :)
    bei sscanf gab es ja auch probleme mit den adressierungen

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen