Beiträge von Kayer
-
-
// Unter OnPlayerCommandText
dcmd(tv,2,cmdtext);
dcmd(tvoff,5,cmdtext);
// Außerhalb eines CallBacks
dcmd_tv(playerid,params [])
{
new user = strval(params);
if(!strlen(params))
{
SendClientMessage(playerid,COLOR_RED,"USAGE: /tv [ID]");
return 1;
}
if(!IsPlayerAdmin(playerid))
{
SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin !");
return 1;
}
if(!IsPlayerConnected(user))
{
SendClientMessage(playerid,COLOR_RED,"Angegebener User nicht online!");
return 1;
}
new Float:Y;
new Float:X;
new Float:Z;
new Float:h;
new sssstring[100];
new ssstring[100];
new name[MAX_PLAYER_NAME];
TogglePlayerSpectating(playerid, 1);
PlayerSpectatePlayer(playerid, user,);GetPlayerPos(user, X,Y,Z);
GetPlayerHealth(user, h);
GetPlayerName(user, name,sizeof name);
format(sssstring,sizeof sssstring,"Name:%s | Geld:%d | Health: %f ",name,GetPlayerMoney(user),h);
format(ssstring, sizeof ssstring,"Position:X = %f ; Y = %f ; Z = %f",X,Y,Z );
SendClientMessage(playerid,COLOR_RED,"====== TV ======");
SendClientMessage(playerid,COLOR_RED,sssstring);
SendClientMessage(playerid,COLOR_RED,ssstring);
SendClientMessage(playerid,COLOR_RED,"====== TV ======");
return 1;
}
//
dcmd_tvoff(playerid,params[]);
{
#pragma unused params
TogglePlayerSpectating(playerid, 0);
return 1;
}
ungetestet ! -
// Das ToglePlayerControllable(playerid, false); so lassen
// SetTimer("Kleidung", 5000, 0); // -"-// Oben
forward Kleidung(playerid);//Außerhalb eines CallBacks
public Kleidung(playerid)
{
TogglePlayerControllable(playerid,true);
return 1;
}
Hoffe,dass es geht.
Wobei ich mich frage,was der Unterschied zu SetTimerEx("Kleidung",5000,0,"i",playerid); wäre...SetTimer gilt ja für Alle(s) bzw. die (ausführende) PlayerID, und SetTimerEx für Variablen - oder? -
Ich denke,dass du dies
stock SetPlayerMoney(playerid, money)
{
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, money);
}
außerhalb eines CallBack´s in dein Script einfügen musst ! -
Hallo,
ich hätte einige Fragen und hoffe,dass diese natürlich schnellstmöglichst beantwortet werden können.
Ich danke schonmal im Vorraus jedem,der mir einen konstruktien Rat geben,sei er auch noch so klein .1)
Ich würde gerne erfahren, wie ich etwas so abspeichern kann,dass nur diese bzw. nicht diese (Zahlen) verwendet werden.
Ein Beispiel bei einem /veh (Auto-Spawn) - Command. Beispielsweise sollen nur bestimmte Autos gespawnt werden können.
if(carid == 100 ) { //CarId ist eine Variable, die für den Wert/Zahl steht, den der User eingibt
Doch will ich z.B.100 Autos zum Spawnen freigeben, ist dies sehr umständlich...gibt es da eine Möglichkeit ( z.B. mit Arry´s )
Doch wie lese ich die eingegebene Zahl aus?2)
Oft werden folgende "Codes" verwendet:
switch(row)
{
case 1: ...
Zu einem können sie - wie ich gehört habe - Zufälle wiedergeben bzw. bestimmte Fälle,aber zum anderen auch eindeutige Fälle angeben, wie z.B. die Nachricht beim Verlassen eines Servers, ob derjenige gekickt/gebannt wurde,den Server verließ oder crashte.Was genau geben sie nun an -- zufällige oder eindeutigen Fälle? Was genau muss in der Klammer nach switch stehen, bzw. was bedeutet es/gibt es an ?Mit freundlichen Grüßen,
Dankend,
Kayer. -
Du kanst die "Join"-Message dennoch unter "OnPlayerConnect" setzen .
// Unter OnPlayerDisconnect
new name[64];
GetPlayerName(playerid, name, sizeof name);
new row;
new sstring[54];
switch(row)
{
case 0:
{
format(sstring, sizeof(sstring), " %s hat den Server verlassen. [Kick/Ban]", name);
SendClientMessageToAll(COLOR_RED, sstring);
}
case 1:
{
format(sstring, sizeof(sstring), " %s hat den Server verlassen. [Verlassen]", name);
SendClientMessageToAll(COLOR_RED, sstring);
}
case 2:
{
format(sstring, sizeof(sstring), " %s hat den Server verlassen. [Timeout]", name);
SendClientMessageToAll(COLOR_RED, sstring);
}
}
return 1;
}
Und nimm dir mal bitte ein wenig Zeit beim Verfassen deines Posts .
Hoffe,dass dies stimmt -
http://www.wiki.sa-mp.com/wiki…y:Scripting_Documentation
#define COLOR_YELLOW 0xFFFF00AA -
// Unter OnPlayerCommandText
dcmd(resetweapons,12,cmdtext)
// Außerhalb eines CallBacks
dcmd_resetweapons(playerid, params[])
{
new name[MAX_PLAYER_NAME],name2[MAX_PLAYER_NAME];
new string3[64],string4[64];
new playa = strval(params);
if(!strlen(params))
{
SendClientMessage(playerid,COLOR_RED,"Verwende:/resetweapons [ID]");
return 1;
}
if(IsPlayerConnected(playa))
{
if(IsPlayerAdmin(playerid))
{
ResetPlayerWeapons(playa);
GetPlayerName(playerid, name, sizeof name);
GetPlayerName(playa,name2, sizeof name2);
format(string3,sizeof string3, "%s hat dir deine Waffen genommen",name);
SendClientMessage(playa,COLOR_RED,string3);
format(string4,sizeof string4,"Du hast %s seine Waffen genommen",name2);
SendClientMessage(playerid,COLOR_RED,string4);
return 1;
}
else
{
SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin");
return 1;
}
}
else
{
SendClientMessage(playerid,COLOR_RED,"Angegebner User nicht online!");
return 1;
}
}
//Hier nochmal eine etwas veränderte Form
if(strcmp(cmd, "/unarm", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GREY, "HILFE: /unarm [SpielerID]");
return 1;
}
new gName[MAX_PLAYER_NAME];
new fm[61];
new pName[MAX_PLAYER_NAME];
new gPlayer;
gPlayer = ReturnUser(tmp);
if(IsPlayerAdmin(playerid))
{
if(!IsPlayerConnected(gPlayer))
{
SendClientMessage(playerid,COLOR_GREY,"Spieler ist nicht online!");
return 1;
}
if(gPlayer != INVALID_PLAYER_ID)
{
ResetPlayerWeapons(gPlayer);
GetPlayerName(gPlayer, gName, sizeof(gName));
GetPlayerName(playerid, pName, sizeof(pName));
format(fm,sizeof(fm), "Du hast %s entwaffnet!", gName);
SendClientMessage(playerid, COLOR_BLUE, fm);
format(fm,sizeof(fm), "Du wurdest von %s entwaffnet!", pName);
SendClientMessage(gPlayer, COLOR_BLUE, fm);
}
else
{
SendClientMessage(playerid,COLOR_GREY,"Falscher Name");
}
}
else
{
SendClientMessage(playerid,COLOR_GREY,"Dazu hast du nicht genügend Rechte!");
}
}
return 1;
} -
löschen
-
er du benutzt die schnellere und einfachere Variante: http://wiki.sa-mp.com/wiki/Fast_Commands
public OnPlayerCommandText(playerid, cmdtext[])
{
//dcmd(BEFEHL,LÄNGE,CMDTEXT);
dcmd(hilfe,5,cmdtext);
[...]
}// dcmd_BEFEHL(playerid,params[])
dcmd_hilfe(playerid,params[])
{
#pragma unused params // da du params, also den Text, den der Spieler hinter den Befehl geschrieben hat, nicht benutzt
[...]
return 1;
}dcmd bzw. sscanf ist kürzer bei Commands mit Parametern,doch bei Commands ohne Variablen erweist es umständlicher .Nebenbei: Versteht man strtok, ist dies genau so einfach
-
//dcmd(buygun,6,cmdtext); unter OnPlayerCommandText
//Außerhalb eines CallBacks
dcmd_buygun(playerid, params[])
{new waffe[43];
if(sscanf(params,"s",waffe))
{
SendClientMessage(playerid,COLOR_RED,"Verwende:/buygun [WAFFENNAME] ");
return 1;
}
if(PlayerToPoint(4.0,playerid, 1958.33, 1343.12, 15.36))
{
if(strcmp(waffe,"9mm",true,strlen(waffe))==0) //
{
if(GetPlayerMoney(playerid) >= 500 )
{
GivePlayerWeapon(playerid,22,1000);
GivePlayerWeapon(playerid,22,1000);
SendClientMessage(playerid,COLOR_RED,"9mm gekauft");
return 1;
}
else
{
SendClientMessage(playerid,COLOR_RED,"Nicht genügend Geld");
return 1;
}
} // --------
else if(strcmp(waffe,"deagle",true,strlen(waffe))==0)
{
if(GetPlayerMoney(playerid) >= 800 )
{
GivePlayerWeapon(playerid,24,1000);
GivePlayerWeapon(playerid,24,1000);
SendClientMessage(playerid,COLOR_RED,"deagle gekauft");
return 1;
}
else
{
SendClientMessage(playerid,COLOR_RED,"icht genügend Geld");
return 1;
}// -----
}
else
{
SendClientMessage(playerid,COLOR_RED,"Waffe existiert nicht");
return 1;
}
}
else
{
SendClientMessage(playerid,COLOR_RED,"Nicht am/im Gunshop ");
return 1;
}
}Ich hab dir mal einen Befehl entworfen,den du selbstverständlich erweitern kannst ( durch ----- gekennzeichnet )
if(strcmp(cmdtext,"/enter",true)==0)
{
if(PlayerToPoint(4.0,playerid,X,Y,Z);
{
SetPlayerPos(playerid,X,Y,Z);
return 1;
}
else {
SendClientMessage(playerid,COLOR_RED,"Nicht nahe genug am Gunshop");
return 1;
}
}
//ebenso /exit gestalten -
Wenn ich mich nicht recht entsinne,sind das "nur" ein Objekte,die zusammen eine recht schöne Insel ( " Map " ) entstehene lassen.
Wie ich schon bereits erwähnt habe, sind diese unter
OnGameModInt
einzufügen mit CreateObject.
( Bzw. wenn die Ersteller einen ObjectStreamer verwenden,so musst du ebenfalls diesen verwenden. )
http://gtamap.delux-host.com/converter/old/
Zunächst bitte ich dich,meine Posts vollständig zu lesen!
Wahrscheinlich benutzen diese einen Streamer,da es mehr als 120 ( 150 ) Objekte sind, und sonst - wie bei dir - der Server crashen würde ( Link steht unten im alten - scheinbar ungelesenen - Post).
Lad dir die include herunter bzw. befolg die Anleitung im Link. -
1. Dies ist weder ein Thread, um Kritik am Verfasser auszuüben, noch irgendwelche sinnlosen Diskussionen zu führen.
2. Ich bitte darum,dass einige sich mehr Zeit nehmen beim Erstellen eines Post und sie nutzen, um ihre Rechtschreibfehler bzw. denn Sinngehalt des Geschriebenen zu überprüfen .Diese 1 Minute fehlt sicherlich keinem und die restlichen User tuen sich wesentlich leichter .
3. Zum eigentlichen Problem:
Ich denke,dass du,da es schon einige mal erwähnt worden ist,weißt, wo es hingehört
Ich bin mir nicht sicher, doch teste mal:
// ...
if(!killerid)
{
// ...
if(killerid == INVALID_PLAYER_ID)
{ -
//ganz oben
forward gehalt(playerid);// Im Befehl (bei /copls)
SetTimerEx("gehalt",900000,1,"i",playerid);//Außerhalb eines CallBacks
public gehalt(playerid)
{
GivePlayerMoney(playerid,1000); // 1000 Durch dein Gehalt ersetzen
return 1;
} -
Ohne den gesamten Code bzw. den Error ist dies wirklich schwer zu sagen.
Hier mal ein kleines Beispiel:
//unter OnPlayerCommandText(..)
// falls keine da ist,hier diese Klammer setzen : {
if(strcmp(cmdtext,"/hilfe",true) == 0)
{
SendClientMessage(playerid,0xC2A2DAAA,".............");
return 1;
}Du brauchst das "OnPlayerCommandText" natürlich nur einmal da zu haben, doch die einzelnen Befehle müssen (durch Klammern getrennt) dort stehen.
Falls du einen Command mit Parametern möchtest, benötigst du strtok oder dcmd ( sscanf ). -
Wenn ich mich nicht recht entsinne,sind das "nur" ein Objekte,die zusammen eine recht schöne Insel ( " Map " ) entstehene lassen.
Wie ich schon bereits erwähnt habe, sind diese unter
OnGameModInt
einzufügen mit CreateObject.
( Bzw. wenn die Ersteller einen ObjectStreamer verwenden,so musst du ebenfalls diesen verwenden. )
http://gtamap.delux-host.com/converter/old/ -
Wo fügt man eine map ein also bei den server ordner ?
Wenn du Script´s meinst -> "Gamemodes" Ordner.
"Maps"(=Objekte),die z.B. mit dem MTA: Map Editor erstellt worden sind,kommen bei "OnGameModInt" rein,jedoch.
Wenn du "Virtual World" meinst, wodurch du "quasi" eine andere Map hast , dann benutz(im Script):
SetPlayerVirtualWorld(playerid,worldid); -
Random
//oben bei den Definitionen
forward Biz();//bei OnGameModInt
SetTimer("Biz",3600000,1);//außerhalb eines CallBacks
new Rando = random(100000000) // falls eine so hohe Zahl unterstützt wird.
//Da ich nicht weiß,wie dein "Biz(geld)" definiert ist, mach ich´s so:
BizMoney += Rando;// ...
if(strcmp(cmdtext,"/buygun",true) == 0)
{
if(PlayerToPoint(Radius,playerid,X,Y,Z); //oben definieren
{
ShowMenuForPlayer(playerid,waffenmenu);
TogglePlayerControlAble(playerid,false);
return 1;
}
else
{
SendClientMessage(playerid,Farbe,"Du bist nicht in der GunShopZone");
return 1;
}
return 1;
}
Hoffe,dass es so stimmt inetwa ! -
Ich kann dir selbstverständlich so ein Script anfertigen, doch
1. möchte ich wissen,ob du das GF verwendest,
2. denke ich,dass dies der falsche Thread ist,da wir hier seine und nicht deine Fragen/Wünsche beantworten/erfüllen sollen.Einige nette,lehrreiche,leichte und gute ("Anfangs-")Scripts findest du beim "Server-Download-Packet" im SA:MP - Forum.Sonst meld dich bei mir !
http://www.sa-mp.com -