Du brauchst einen String, den Namen vom Spieler und den Befehl mit SSCanf.
Den Befehl hast du ja schon. Dann würde ich als nächstes "new pID;" machen.
Anschleißend musst du mit sscanf auslesen, welchen Namen er eingegeben hat und im String formatieren. Ich würde es so machen:
ocmd:anstupsen(playerid,params[])
{
new string[128], pID;
new name[MAX_PLAYER_NAME];
if(sscanf(params,"u",pID))return SendClientMessage(playerid,Farbe,Error);
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
format(string,128,"Du wurdest von %s angestupst",name);
SendClientMessage(pID,Farbe,string);
return 1;
}
Beiträge von CaptainKevin
-
-
Ein "New" im Script erstellen und Random Positionen erstellen.
Dann beim "/auto" Befehl bei x,y,z, die Random Positionen einsetzen -
AddVehicleComponent(vehicleid,componentid);
-
Außerdem sendest du die Nachricht nicht an alle Spieler sondern, du sendest sie an alle Spieler, die in der Fraktion1 sind.
Wenn du es richtig machen willst, versuchst du es mal so:
ocmd:m(playerid,params[])
{
new text[128], Float:x, Float:y, Float:z, string[128];
if(sscanf(params,"s",text))return SendClientMessage(playerid,Rot,"Error");
format(string,128,"Officer %s:%s",SpielerName(playerid),text);
GetPlayerPos(playerid,x,y,z);
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(IsPlayerInRangeOfPoint(i,10,x,y,z))
{
SendClientMessage(i,Gelb,string);
}
}
}
return 1;
} -
Also ein Filterscript, mit dem ein O-Amt mitglied fahrzeuge mit /opark als "Abgeschleppt" bestötigen kann?
-
1. Ein Befehel
2. einen String formatieren
3. eine Schleife durch alle Leute machen und abfragen, in welcher Frak sie sind
4. Den String ausgeben -
3390 xD
Und ich dachte, ich bin mit meinen 3gh und 8 GB Arbeitsspeicher schnell -..- -
public OnPlayerDeath(playerid,killerid,reason)
{
SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
SetPVarInt(playerid,"Level",GetPVarInt(playerid,"Level")+1);
SpielerSpeichern(playerid);
return 1;
}/e: Mit Dini Speicherung hinzugefügt
-
ocmd:givemoneyall(playerid,params[])
{
new anzahl;
if(adminabfrage)return SendClientMessage(playerid,Rot,"Kein Admin");
if(sscanf(params,"d",anzahl))return SendClientMessage(playerid,Gelb,"Verwendung: /givemoneyall anzahl");
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
GivePlayerMoney(playerid,anzahl);
}
}
return 1;
} -
if(newstate==PLAYER_STATE_DRIVER)
{
for(new i=0; i<sizeof yakuzacar; i++)//anpassen
{
if(GetPlayerVehicleID(playerid)==yakuzacar[i])//anpassen
{
if(GetPVarInt(playerid,"Fraktion")!=4)//fraktion anpassen
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid,Rot,"Du hast keine Schlüssel für dieses Fahrzeug.");
}
}
}
}
Pass dir das mal an -
Deshalb hab ich ja dazu geschrieben: MIT ERKLÄRUNG
Wer lesen kann ist klar im Vorteil.B2T: Hier im Forum gibt es ein Tutorial für ein Dynamischen FraktionsCar System.
Ich blick da aber nicht durch -
if(!isPlayerInFrakt(playerid,Frakid))
//E: Oder: if(GetPVarInt(playerid,"Fraktion") != Frakid)
-
Per SMS bezahlen? Easy!
Mit Boko SMS.
Oder, wenn ich dir 10€ bei nem Spiel aufladen soll oder so kA -
Dr.Scripter, wenn ich bei dir auch per SMS bezahlen kann,
dann möchte, dass du mir mal erklärst, wie du das gescriptet hat.
Mit Autohaussystem. Ich bin zu doof lol :O -
Dann beantwortet mir eins: Warum ging es gestern und heute noch?
Ich benutze den Code seit Monaten. Immer nur so. Nie war was falsch.
Und dein Code ist auch falsch eingerückt -
Wie im Titel oben schon beschrieben, habe ich ein Problem mit SSCANF.
Ich habe diesen Befehl hier:
ocmd:spawn(playerid,params[])
{
if(!isAdmin(playerid,1))return SendClientMessage(playerid,Rot,Aerror);
new pID, string[128], alevel[128];
if(sscanf(params,"u",pID))return SendClientMessage(playerid,Gelb,"Verwendung: /spawn [Playerid]");
if(!IsPlayerConnected(pID))return SendClientMessage(playerid,Rot,Oerror);
switch(GetPVarInt(playerid,"Adminlevel"))
{
case 1:{alevel="Supporter";}
case 2:{alevel="Moderator";}
case 3:{alevel="Administrator";}
case 4:{alevel="Super Admin";}
case 5:{alevel="Manager";}
case 6:{alevel="Leiter";}
}
format(string,128,"%s %s hat den Spieler %s gespawnt.",alevel,GetName(playerid),GetName(pID));
SendClientMessageToAll(Rot,string);
SpawnPlayer(pID);
return 1;
}
Und den SScanf code:
stock sscanf(string[],format[],{Float,_}:...){if(string[0]==0||(string[0]==1&&string[1]==0)){return format[0];}new formatPos=0,stringPos=0,paramPos=2,paramCount=numargs(),delim=' ';while(string[stringPos]&&string[stringPos]<=' '){stringPos++;}while(paramPos<paramCount&&string[stringPos]){switch(format[formatPos++]){case'\0':{return 0;}case'i','d':{new neg=1,num=0,ch=string[stringPos];if(ch=='-'){neg=-1;ch=string[++stringPos];}do{stringPos++;if('0'<=ch<='9'){num=(num * 10) + (ch - '0');}else{return -1;}}
while((ch=string[stringPos])>' '&&ch!=delim);setarg(paramPos,0,num * neg);}case'h','x':{new num=0,ch=string[stringPos];do{stringPos++;switch(ch){case'x','X':{num=0;continue;}case'0' .. '9':{num=(num << 4) | (ch - '0');}case'a' .. 'f':{num=(num << 4) | (ch - ('a' - 10));}case'A' .. 'F':{num=(num << 4) | (ch - ('A' - 10));}default:{return -1;}}}while((ch=string[stringPos])>' '&&ch!=delim);setarg(paramPos,0,num);}case'c':{setarg(paramPos,0,string[stringPos++]);}
case'f':{new changestr[16],changepos=0,strpos=stringPos;while(changepos<16&&string[strpos]&&string[strpos]!=delim){changestr[changepos++]=string[strpos++];}changestr[changepos]='\0';setarg(paramPos,0,_:floatstr(changestr));}case'p':{delim=format[formatPos++];continue;}case'\'':{new end=formatPos - 1,ch;while((ch=format[++end])&&ch!='\'') {}if(!ch){return -1;}format[end]='\0';if((ch=strfind(string,format[formatPos],false,stringPos))==-1){if(format[end + 1]){
return -1;}return 0;}format[end]='\'';stringPos=ch + (end - formatPos);formatPos=end + 1;}case'u':{new end=stringPos - 1,id=0,bool:num=true,ch;while((ch=string[++end])&&ch!=delim){if(num){if('0'<=ch<='9'){id=(id*10)+(ch-'0');}else{num=false;}}}if(num&&IsPlayerConnected(id)){setarg(paramPos,0,id);}else{
#if!defined foreach
#define foreach(%1,%2) for (new %2=0; %2<MAX_PLAYERS; %2++) if(IsPlayerConnected(%2))
#define __SSCANF_FOREACH__
#endif
string[end]='\0';num=false;new name[MAX_PLAYER_NAME];id=end - stringPos;foreach (Player,playerid){GetPlayerName(playerid,name,sizeof (name));if(!strcmp(name,string[stringPos],true,id)){setarg(paramPos,0,playerid);num=true;break;}}if(!num){setarg(paramPos,0,INVALID_PLAYER_ID);}string[end]=ch;
#if defined __SSCANF_FOREACH__
#endif
}stringPos=end;}case's','z':{new i=0,ch;if(format[formatPos]){while((ch=string[stringPos++])&&ch!=delim){setarg(paramPos,i++,ch);}if(!i){return -1;}}else{while((ch=string[stringPos++])){setarg(paramPos,i++,ch);}}stringPos--;setarg(paramPos,i,'\0');}default:{continue;}}while(string[stringPos]&&string[stringPos]!=delim&&string[stringPos]>' '){stringPos++;}while(string[stringPos]&&(string[stringPos]==delim||string[stringPos]<=' ')){stringPos++;}paramPos++;}do
{if((delim=format[formatPos++])>' '){if(delim=='\''){while((delim=format[formatPos++])&&delim!='\'') {}}else if(delim!='z'){return delim;}}}while(delim>' ');return 0;}
Wenn ich compilen will kommt das:
C:\Users\Smith Fmily\Desktop\0.3eR2 - MySQL\gamemodes\WOGD.pwn(687) : warning 217: loose indentation
C:\Users\Smith Fmily\Desktop\0.3eR2 - MySQL\gamemodes\WOGD.pwn(687) : warning 217: loose indentation
C:\Users\Smith Fmily\Desktop\0.3eR2 - MySQL\gamemodes\WOGD.pwn(687) : warning 217: loose indentation
C:\Users\Smith Fmily\Desktop\0.3eR2 - MySQL\gamemodes\WOGD.pwn(688) : warning 217: loose indentation
C:\Users\Smith Fmily\Desktop\0.3eR2 - MySQL\gamemodes\WOGD.pwn(688) : warning 217: loose indentation
C:\Users\Smith Fmily\Desktop\0.3eR2 - MySQL\gamemodes\WOGD.pwn(689) : warning 217: loose indentation
C:\Users\Smith Fmily\Desktop\0.3eR2 - MySQL\gamemodes\WOGD.pwn(689) : warning 217: loose indentation
C:\Users\Smith Fmily\Desktop\0.3eR2 - MySQL\gamemodes\WOGD.pwn(690) : warning 217: loose indentation
C:\Users\Smith Fmily\Desktop\0.3eR2 - MySQL\gamemodes\WOGD.pwn(690) : warning 217: loose indentation
C:\Users\Smith Fmily\Desktop\0.3eR2 - MySQL\gamemodes\WOGD.pwn(690) : warning 217: loose indentation
C:\Users\Smith Fmily\Desktop\0.3eR2 - MySQL\gamemodes\WOGD.pwn(695) : warning 217: loose indentation
C:\Users\Smith Fmily\Desktop\0.3eR2 - MySQL\gamemodes\WOGD.pwn(695) : warning 217: loose indentation
C:\Users\Smith Fmily\Desktop\0.3eR2 - MySQL\gamemodes\WOGD.pwn(698) : warning 217: loose indentation
C:\Users\Smith Fmily\Desktop\0.3eR2 - MySQL\gamemodes\WOGD.pwn(698) : warning 217: loose indentation
C:\Users\Smith Fmily\Desktop\0.3eR2 - MySQL\gamemodes\WOGD.pwn(698) : warning 217: loose indentation
C:\Users\Smith Fmily\Desktop\0.3eR2 - MySQL\gamemodes\WOGD.pwn(698) : warning 217: loose indentation
C:\Users\Smith Fmily\Desktop\0.3eR2 - MySQL\gamemodes\WOGD.pwn(698) : warning 217: loose indentation
C:\Users\Smith Fmily\Desktop\0.3eR2 - MySQL\gamemodes\WOGD.pwn(698) : warning 217: loose indentation
C:\Users\Smith Fmily\Desktop\0.3eR2 - MySQL\gamemodes\WOGD.pwn(699) : warning 217: loose indentation
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase19 Warnings.
Warum? Info: Aerror und Oerror sind Texte, die ich oben definiert habe. Wenn ich sie rausnehme, kommt immer noch das selbe. -
Ich finds gut.
9/10.
Der eine Punkt, der dir fehlt, ist, weil da zu wenig Beleuchtung ist. (ohh man, fette Rechtschreibfehler)
Aber ich finde die Map gut. Mach noch mehr und ich benutze sie -
Warum nimmst du 3 Variablen? Du musst immer nur "x,y,z" benutzen.
Nicht "xx,yy,zz".
Verbessere es mal und versuche ob das jetzt geht. -
Warum? Erstelle die Fahrzeuge doch per Gamemode und dann
lasst die PosA in deine belibige Richtung zeigen. -
LoL? Alles falsch....
if(strcmp("/enter", cmdtext, true) == 0)
{
if(IsPlayerInRangeOfPoint(playerid,2,1555.4998,-1675.5679,16.1953))
{
SetPlayerPos(playerid,288.9064,171.3878,1007.1794);
SetPlayerInterior(playerid,3);
return 1;
}
return 1;
}