Hey..
Hier kannst du dir ein Tutorial anschauen, wie man NPC's erstellt..
Wenn du ihm dann eine Animation geben willst, musst du unter deinem Gamemode unter "OnPlayerSpawn" abfragen, welchen Namen der hat.. ( bsp. "[BOT]Sitzen" ).. Wenn er den Namen hat, setzt du ihm eine Animation..
Beiträge von ErikSon
-
-
Ahh.. Jetzt hab ichs verstanden..
Danke dir, habe dir Progress-Bars in meiner Include nun in OnPlayerConnect reingehauen, und es wird auch im GM aufgerufen..
Danke vielmals -
Slash™: Ohh
Danke dir..Nur habe ich jetzt nicht verstanden, was genau an der Progress-Include falsch ist..
Kannst du mir das vlt nochmal erklären? ( Sorry ) -
ErikSon:
Dir will aber auch keiner helfen oder?Also nochmal zu Verständnis, wenn du die Include inkludiert hast, dann wird OnGameModeInit in deinem Gamemode nicht mehr ausgeführt, richtig?
Ansonsten versuch es mal mit ner anderen hooking Methode, http://forum.sa-mp.com/showthread.php?t=387600
Funktioniert eigentlich super, und wird in viele Includes wie das eine von mir und IPrototypeI verwendet/e
Zum anderen arbeitet diese Methode viel schneller als die normalen Hooks, da CallLocalFunction nicht mehr benötigt wird.
Hey..
Ja, irgendwie will mir keiner helfen ( Mögen mich halt nicht )Habe die Methode mal ausprobiert..
Leider klappt es auch nicht..Oder hab ich was falsch gemacht?
Hier mal der Code: Pastebin
-
Hey..
Habe ein Problem bei einer Include, was ich erst gestern bemerkte..
Habe ja vor einiger Zeit mal eine Include rausgebracht, wo das Leben, die Schutzweste und das Geld Serverside ist..
Jedoch wird das Mainscript dadurch unterbrochen, OnGameModeInit wird nichteinmal aufgerufen..
Wenn ich die Definitionen der Callbacks entferne, klappt alles perfekt, jedoch kommt es dadurch zu Errors, da "OnGameModeInit" usw ja bereits vorhanden ist..Weiß nicht mehr weiter..
Kann mir jemand vlt helfen?-> Code
Die Definitionen sind ganz unten..
Da ich dafür ein kleines Update rausbringen wollte, habe ich das mal getestet, jedoch bemerkte ich dann den Fehler..
Hoffe jemand kann mir helfen..
Danke im Voraus!Definitionen #if defined _ALS_OnPlayerConnect
#undef OnPlayerConnect
#else
#define _ALS_OnPlayerConnect
#endif
#define OnPlayerConnect SS_OnPlayerConnect
#if defined _ALS_OnGameModeInit
#undef OnGameModeInit
#else
#define _ALS_OnGameModeInit
#endif
#define OnGameModeInit SS_OnGameModeInit
#if defined _ALS_OnGameModeExit
#undef OnGameModeExit
#else
#define _ALS_OnGameModeExit
#endif
#define OnGameModeExit SS_OnGameModeExit
#if defined _ALS_OnPlayerSpawn
#undef OnPlayerSpawn
#else
#define _ALS_OnPlayerSpawn
#endif
#define OnPlayerSpawn SS_OnPlayerSpawn
#if defined _ALS_OnPlayerDeath
#undef OnPlayerDeath
#else
#define _ALS_OnPlayerDeath
#endif
#define OnPlayerDeath SS_OnPlayerDeath
#if defined _ALS_OnPlayerDisconnect
#undef OnPlayerDisconnect
#else
#define _ALS_OnPlayerDisconnect
#endif
#define OnPlayerDisconnect SS_OnPlayerDisconnect
#if defined _ALS_OnPlayerTakeDamage
#undef OnPlayerTakeDamage
#else
#define _ALS_OnPlayerTakeDamage
#endif
#define OnPlayerTakeDamage SS_OnPlayerTakeDamage//Edit: Pastebin erneuert..
Diese Schweine löschen den iwi immer.. Keine Ahnung, warum.. -
Pascal.: Wozu zwei gleiche Abfragen?.. (die sscanf)
-
Naja.. Wenn du meinst
Wenn du willst, kann ich dir das dann machen.. Dass da dann perfekt läuft. .Oder du kannst es ja auch selber versuchen, und wenn du Probleme hast, kannst hier fragen. .
-
new GivenMoney [MAX_PLAYERS],
moneytimer [MAX_PAYERS];moneytimer[playerid] = SetTimerEx("GeldGeben1",500,1,"ii", playerid, Betrag);
forward GeldGeben1(playerid, Betrag);
public GeldGeben1(playerid, Betrag){
new money = (Betrag / 10);
GivenMoney [playerid] += money;
GivePlayerMoney (playerid, money);
if (GivenMoney [playerid] == Betrag){
rerurn KillTimer (moneytimer [playerid]);
}
return 1;
}Dies ist jedoch auch nicht gerade gut..
Du müsstet jetzt für jeden Betrag etwas anderes machen. .
Ist der Betrag unter 100$, so kannst du ihm das auf 2 Schlägen geben, darunter bspw. 10$ auf einem Schlag..
Das ist ziemlich unnötig und ressourcenfressend..#Handy, deswegen is Code so kacke und so wenig dazugeschrieben
-
Hey..
Du hast die Variable "pID" nur erstellt, weswegen sie den Wert 0 beträgt.
Du musst die ID des Spielers ja auch irgendwie setzenocmd:clear(playerid,params[]){
if(GetPVarInt(playerid,"Fraktion")== 1 || GetPVarInt(playerid,"Fraktion")== 4 || GetPVarInt(playerid,"Fraktion")== 2){
new pID,vehicleid = GetPlayerVehicleID(playerid);
if(sscanf(params,"i",pID))return SendClientMessage(playerid,FARBE,"DEINE MESSAGE"); // Hier bearbeiten!
if(IsPlayerInRangeOfPoint(playerid,5.0,1481.0104,-1778.0242,3288.7859) || IsPlayerInRangeOfPoint(playerid,5.0,242.5531,1861.5344,14.0840) || IsACopCar(vehicleid)){
if(GetPVarInt(pID,"Wanted") > 0){
new string[128],sendername[MAX_PLAYER_NAME],name32[MAX_PLAYER_NAME];
GetPlayerName(playerid, sendername, sizeof(sendername));
if(sscanf(params,"u",pID))return SCM(playerid,COLOR_FADE3,"/clear [spieler]");
GetPlayerName(pID,name32,sizeof(name32));
format(string, sizeof(string), "Du hast die Strafakte von %s gelöscht!",name32);
SCM(playerid,ROT, string);
format(string, sizeof(string), "Officer %s hat deine Wanteds gelöscht!",sendername);
SCM(pID,ROT, string);
format(string,sizeof(string),"HQ: %s hat die Strafakte von %s gelöscht.",sendername,name32);
StaatCast(string);
SetPVarInt(pID,"Wanted",0);
TextDrawHideForPlayer(pID,wanteddraw[pID]);
return TextDrawHideForPlayer(pID,wantedstern);
}
return SCM(playerid,ROT,"Dieser Spieler wird nicht gesucht!");
}
return SCM(playerid,RED,"Du bist nicht am Clearpunkt/in einem Streifenwagen!");
}
return SCM(playerid,RED,"Du bist kein Beamter!");
} -
J0a9: Dann müsstest du ihm das per Timer immer in kleinen Stücken geben.. ( also das Geld )
-
[PeL]Smiley:
Versuche es mal so:
ocmd:givewarn(playerid,params[]){
new pID,string[128],reason[64];
if(SpielerInfo[playerid][pAdminlevel] < 4) return SendClientMessage(playerid,Rot,"Möglich ab: "COLO" Adminrank 4");
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,Rot,"Keiner ist Verbunden mit dieser ID!");
if(sscanf(params,"us", pID, reason)) return SendClientMessage(playerid, Rot,""COLO"Verwendung :"COLR" /givewarn [ID] [Grund]");
SpielerInfo[pID][pWarns] ++;
SavePlayer(pID);
format(string,sizeof(string),""COLO"[%s] %s"COLR" hat dir einen Warn gegeben! "COLO"Grund: "COLR "%s ",adminrang(playerid),GetName(playerid),reason);
SendClientMessage(pID,Rot,string);
format(string,sizeof(string),"Du hast "COLO" %s "COLR" einen Warn gegeben! "COLO"Grund: "COLR" %s",GetName(pID),reason);
SendClientMessage(playerid,Rot,string);
if(SpielerInfo[playerid][pWarns] >= 3){
SendClientMessage(pID,Rot,"Du wurdest Gebannt! "COLO"Grund: "COLR"3Warns");
format(string,sizeof(string),""COLO"[ServerNachricht] "COLR" %s wurde vom Server gebannt! "COLO"Grund: "COLR"3Warns",GetName(pID));
SendClientMessageToAll(Rot,string);
SpielerInfo[pID][pBan] = 1;
SavePlayer(pID);
return SetTimerEx("BanTimer",500,false,"i",pID);
}
return 1;
}
Wie Mr.Reese bereits sagte, den Timer als letztes starten..
Außerdem brauchst du nicht tausend String-Variablen erstellen, wenn du nur eine gleichzeitig nutzt//Wie viele Warns hast du / hat der Spieler denn, wenn du ihm / dir einen Warn gibst?
Bei deiner Abfrage ist, dass er nur gebannt wird, wenn er genau 3 Warns hat..
Vielleicht hat er ja mehr als 3 und du versuchst es weiterhin.. -
Hey..
Kommt vielleicht ein bisl spät..
Habe den Bug mal gefixxt.. -
Eine neue Version ist raus!
Einige / Bekannte Bugs gefixxt und einige Sachen geändert!Mehr dazu hier!
-
Tom Sunder: Dann mach es doch wie die Russen..
Du machst, dass man mit einem Launcher auf deinen Server connecten muss, und wenn man den Launcher "installiert", setzt du automatisch diese Mods ein..
Natürlich vorher mit einer Einverständigung des Spielers, welche er jedoch annehmen muss.. -
@toniyo: Achso, na dann..
Code if(PlayerInfo[playerid][pHeadValue] > 0){
if(IsPlayerConnected(killerid)){
if(PlayerInfo[killerid][pMember] == 8 || PlayerInfo[killerid][pLeader] == 8){
if(GoChase[killerid] == playerid){
ConsumingMoney[killerid] = 1;
new killer[MAX_PLAYER_NAME];
GetPlayerName(killerid, killer, sizeof(killer));
new fkasse = PlayerInfo[playerid][pHeadValue];
FraktionsKasse[8] += fkasse;
GivePlayerMoney(killerid, PlayerInfo[playerid][pHeadValue]);
GetPlayerName(playerid, giveplayer, sizeof(giveplayer));
format(string,128,"<< Hitman %s hat den Auftrag an %s erfüllt und erhält: $%d >>",killer,giveplayer,PlayerInfo[playerid][pHeadValue]);
SendFamilyMessage(8, COLOR_YELLOW, string);
Log("Auftrag.txt",string);
GotHit[playerid] = 0;
GetChased[playerid] = 999;
GoChase[killerid] = 999;
}
}
}
}Code if(PlayerInfo[playerid][pHeadValue] > 0){
SendClientMessage(playerid,COLOR_YELLOW,"Du bist nun auf dem Friedhof weil ein Contract auf dich ausgesetzt war!");
PlayerInfo[playerid][pHeadValue] = 0;
}Der Fehler ist.. Dass du bei OnPlayerDeath schon den "HeadValue"- Wert auf 0 setzt.. Und wenn er dann spawnt, ist die "HeadValue" ja 0, also nicht größer als 0
-
if(PlayerInfo[playerid][pHeadValue] > 0){
if(IsPlayerConnected(killerid)){
if(PlayerInfo[killerid][pMember] == 8 || PlayerInfo[killerid][pLeader] == 8){
if(GoChase[killerid] == playerid)
{
SendClientMessage(playerid,COLOR_YELLOW,"Du bist nun auf dem Friedhof weil ein Contract auf dich ausgesetzt war!");
ConsumingMoney[killerid] = 1;
new killer[MAX_PLAYER_NAME];
GetPlayerName(killerid, killer, sizeof(killer));
new fkasse = PlayerInfo[playerid][pHeadValue];
FraktionsKasse[8] += fkasse;
GivePlayerMoney(killerid, PlayerInfo[playerid][pHeadValue]);
GetPlayerName(playerid, giveplayer, sizeof(giveplayer));
format(string,128,"<< Hitman %s hat den Auftrag an %s erfüllt und erhält: $%d >>",killer,giveplayer,PlayerInfo[playerid][pHeadValue]);
SendFamilyMessage(8, COLOR_YELLOW, string);
Log("Auftrag.txt",string);
PlayerInfo[playerid][pHeadValue] = 0;
GotHit[playerid] = 0;
GetChased[playerid] = 999;
GoChase[killerid] = 999;
}
}
}
}Oder soll die Nachricht erst kommen, wenn er auf dem Friedhof spawnt?..
-
Wo setzt du die "HeadValue" denn wieder auf 0?..
Das müsste nämlich auch nach der Message gemacht werden, da der Contract dann ja nie endet..Spoiler anzeigen if(strcmp(cmd, "/contract", true) == 0){
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))return SendClientMessage(playerid, COLOR_GRAD1, "Benutze: /contract [playerid] [Betrag]");
giveplayerid = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))return SendClientMessage(playerid, COLOR_GRAD1, "Benutze: /contract [playerid] [Betrag]");
moneys = strval(tmp);
if(moneys < 5000 || moneys > 500000)return SendClientMessage(playerid, COLOR_GREY, " Die Vertragssumme muss mindestens $5000-, aber nicht mehr als $500000 betragen!");
if(PlayerInfo[playerid][pLevel] < 2)return SendClientMessage(playerid, COLOR_GRAD1, "Du musst mindestens Level 2 haben, um einen Vertrag zu erstellen.");
if (!IsPlayerConnected(giveplayerid))return format(string, sizeof(string), " %d ist kein aktiver Spieler.", giveplayerid),SendClientMessage(playerid, COLOR_GRAD1, string);
if(giveplayerid == INVALID_PLAYER_ID)return 1;
if(PlayerInfo[giveplayerid][pMember] == 8 && PlayerInfo[playerid][pLeader] == 8)return SendClientMessage(playerid, COLOR_GREY, " Du kannst keine Verträge mit deiner eigenen Agentur abschließen!");
else if(PlayerInfo[giveplayerid][pLeader] == 8 && PlayerInfo[playerid][pMember] == 8)return SendClientMessage(playerid, COLOR_GREY, " Du kannst keine Verträge mit deiner eigenen Agentur abschließen!");
if(giveplayerid == playerid)return SendClientMessage(playerid, COLOR_GREY, "Du kannst dich nicht selber unter Vertrag nehmen!");
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
if(PlayerInfo[giveplayerid][pMember] == 8||PlayerInfo[giveplayerid][pLeader] == 8)return SendClientMessage(playerid, COLOR_GREY, " Du kannst diesen Spieler nicht unter /contract nehmen, da er verbuggt ist !");
if(GetPlayerMoney(playerid) >= moneys){
GivePlayerMoney(playerid,-moneys);
PlayerInfo[giveplayerid][pHeadValue]+=moneys;
format(string, sizeof(string), "%s möchte, dass ein Hitman die Zielperson %s für $%d tötet.",sendername, giveplayer, moneys);
SendFamilyMessage(8, COLOR_YELLOW, string);
format(string, sizeof(string), "* Du hast einem Hitman den Auftrag zur Beseitigung von %s für $%d erteilt.",giveplayer, moneys);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
return PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
}
else return SendClientMessage(playerid, COLOR_GRAD1, "Du hast nicht genug Geld auf der Hand.");
} -
Sollte so klappen..
Ansonsten debugge es mal..if(strcmp(cmd, "/repair", true) == 0){
if(JobDuty[playerid] == 1 && PlayerInfo[playerid][pLeader] == 18 || PlayerInfo[playerid][pMember] == 18){
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))return SendClientMessage(playerid, COLOR_LIGHTBLUE, "Benutze: /repair [SpielerID] [Preis]");
new playa,money;
playa = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
money = strval(tmp);
if(money < 1 || money > 2000)return SendClientMessage(playerid, COLOR_GREY, "Repairpreis kann max. $2000 betragen!");
if(!IsPlayerConnected(playa))return SendClientMessage(playerid, COLOR_GREY, "Dieser Spieler ist offline.");
if(ProxDetectorS(8.0, playerid, playa) && IsPlayerInAnyVehicle(playa)){
GetPlayerName(playa, giveplayer, sizeof(giveplayer)), GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* Du bietest %s an sein Auto für $%d zu reparieren.",giveplayer,money);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "* Mechaniker %s bietet dir an dein Auto für $%d zu reparieren, (Benutze /accept repair) zum akzteptieren.",sendername,money);
SendClientMessage(playa, COLOR_LIGHTBLUE, string);
RepairOffer[playa] = playerid;
RepairPrice[playa] = money;
}
else return SendClientMessage(playerid, COLOR_GREY, "Spieler nicht in deiner Nähe.");
}
return 1;
} -
Hey..
Habe noch eine CD von GTA4 rumliegen.. Wollte diese ebend installieren, jedoch kommt immer ein Fehler bei der Installation..Habe auch schon nach dem Problem gegooglt, was ich rausgefunden habe.. ist, dass entweder das Laufwerk oder die CD beschädigt ist..
Das Laufwerk ist in Ordnung, aber die CD hat ein paar Kratzer..Könnte das Problem vlt auch woanders liegen?..
-
ErikSon: Ja super dann stürzt mein Compiler ab^^
Wo fügst du das denn auch ein?..