gesendet.. bitteschön..
Beiträge von Simon
-
-
mhh ja ist dabei egal welches admin lvl der hat?
-
achsoo ja ich bastel dir eben ein fs
-
da brauchste kein sf, das mach ich dir ins gm. nur wir können dir net helfen wennde net sagst wo die spawnen sollen.
und woher sollen wir wissen wo autos stehen sollen? du musst schon sagen wie du dir das vorstellst und das geht so schnell und ist so weinfach das kannste auch alleine
da brauchste kein scripting können, da musst du nur copy und paste machen. -
router neustart.. zieh stecker von router raus, ggf warte ne minute eig net notwendig und stecker wieder rein. so dann dauert es 1-2 min bis du wieder inet hast und dann haste ne neue ip. und schwupp kannste weiter downloaden.
-
ganz einfach, es giebt verschiedene leute die das auf verschiedene seiten hochladen, vllt ist einfach die datei die er runterlädt fehlerhaft/ nicht vollständig. oder da istn virus drauf.. wenn er das von jemand anderes runterlädt, dann könnte es klappen.
-
hmm ich weiß net wieso. tut mir leid dann kann ich dir auch nicht helfen.. probiers mal mit einer anderen version, ner anderen download seite..
-
pushen und doppel post´s sind verboten, lade dir doch einfach mta neu runter..
-
ja und das mit dem spawn und waffen ist auch einfach das erkläre ich dir. es giebt bei samp wiki eine liste von allen skins und deren id.
du musst ebenfalls unter OnGameModeInit(), wo du auch die autos hast folgendes einfügen:AddPlayerClass(skin, Float:x, Float:y, Float:z, Float:Angle, waffe1, waffe1 muni, waffe2, waffe2 muni, waffe3, waffe3 muni)
du findest bei Samp Wiki ebenfalls die liste der waffen ids.
die koordienaten, sprich Float: x,y,z,angel kannst du so rauskriegen:du startest wieder samp_debug, läufts mit deinem typen dahin wo er spawnen soll, und machst /save. in der savepositions.txt im GTA ordner findest du dann folgendes:
AddPlayerClass(0,x,y,z,angel,0,0,0,0,0,0);//
das fügste nun wi oben schon gesagt unter OnGameModeINit(). du musst nun nurnoch die nullen durch die jeweiligen ids ersetzten.
hier nochmal nen link: http://wiki.sa-mp.de/AddPlayerClass
-
-
Guten Tag. Ich habe hier mal ein paar Badwords gemacht, bei denen man gekickt wird.
ich habe folgendes problem, es passiert nur was bei dem ersten wort, in diesem fall: "Hurensohn".new BadWords[] = {"Hurensohn", "Wichser", "Schwanzlutscher","fotzenkopf", "Penner","Wixxer","Huso","fick dich","missgeburt","fick_dich","fickdich","Huren Sohn","spaken","asshole","Spast","spasti","Fotze","Penislutscher","Arschficker","Idiot","Motherfucker","Bitch","Hurentochter"};
public OnPlayerText(playerid, text[])
{
if(!strfind(text,BadWords,true))
{
if(SpielerInfo[playerid][alvl]<=0)
{
new kname[MAX_PLAYER_NAME], string[256];
GetPlayerName(playerid, kname, sizeof(kname));
SendClientMessage(playerid,0xFF0000FF,"Beleidigungen sind verboten, du wurdest gekickt!");
format(string, sizeof(string), "%s(%d) wurde vom System gekickt. Grund: Beleidigung ",kname,playerid);
SendClientMessageToAll(0xFF0000FF,string);
Kick(playerid);
}
}
return 1;
} -
OnPlayerConnect(playerid)
{
TextDrawsShown[playerid] = false;
VHSCreated[playerid] = false;
LightRedHealthCreated[playerid] = false;
Desktop_Check[playerid] = 0;
Desktop_Timer_Started[playerid] = 0;
Desktop_Status[playerid] = 0;
TextDrawShowForPlayer(playerid, version);
new Spielerdatei[256];
new SpielerName[MAX_PLAYER_NAME];
GetPlayerName(playerid,SpielerName,sizeof(SpielerName));
format(Spielerdatei,sizeof(Spielerdatei),"/Simon/%s.ini",SpielerName);
SpielerInfo[playerid][Banned] = dini_Int(Spielerdatei,"Banned");if(SpielerInfo[playerid][Banned] == 1)
{
new Gesperrt[256], Grund[256];
format(Gesperrt,sizeof(Gesperrt),"Der Account %s ist hier gebannt!", SpielerName);
format(Grund,sizeof(Grund),"Grund: %s!", SpielerInfo[playerid][Reason]);
SendClientMessageToAll(Rot, Gesperrt);
SendClientMessageToAll(Rot, Grund);
Ban(playerid);
}
else
{
if(slock == 1)
{
SendClientMessage(playerid, COLOR_RED, "Der Server ist abgeschlossen, probiere es später nochmal!");
Kick(playerid);
}
else
{
if(dini_Exists(Spielerdatei))
{
ShowPlayerDialog(playerid, login, DIALOG_STYLE_INPUT, "Logge dich mit deinem Passwort ein!", " ", "Login!", "Abbrechen!");
}
else if(!dini_Exists(Spielerdatei))
{
ShowPlayerDialog(playerid, regis, DIALOG_STYLE_INPUT, "Registriere dich mit einem Passwort!", " ", "Registrieren!", "Abbrechen!");
}
new Connect[256],str[256],day,month,year,second,minute,hour;
gettime(hour,minute,second);
getdate(year,month,day);
format(Connect,sizeof(Connect),"%s (%d) hat sich eingeloggt!",SpielerName,playerid);
SendClientMessageToAll(0xFFFFFFFF, Connect);
format(str,sizeof(str),"[LOGIN][%d.%d.%d][%s%d:%s%d:%s%d]%s hat sich mit der id %d eingeloggt\r\n" ,day,month,year, (hour < 10) ? ("0") : (""), hour+0, (minute < 10) ? ("0") : (""), minute, (second < 10) ? ("0") : (""), second, SpielerName, playerid);
AddLog("LogInOut.log", str);
}
}
return 1;
}OnPlayerDisconnect(playerid, reason)
{
SpielerUpdate(playerid);
Eingeloggt[playerid] = 0;
SaveX[playerid] = 0;
SaveY[playerid] = 0;
SaveZ[playerid] = 0;
SaveInt[playerid] = 0;if(reason == 0)
{
new SpielerName[MAX_PLAYER_NAME],day,month,year,second,minute,hour,str[256];
getdate(year,month,day);
gettime(hour,minute,second);
GetPlayerName(playerid,SpielerName,sizeof(SpielerName));
new DisConnect[256];
format(DisConnect,sizeof(DisConnect),"%s (%d) hat die Verbindung verloren!",SpielerName,playerid);
format(str,sizeof(str),"[LOGOUT][%d.%d.%d][%s%d:%s%d:%s%d]%s (%d) hat die Verbindung verloren\r\n" ,day,month,year, (hour < 10) ? ("0") : (""), hour+0, (minute < 10) ? ("0") : (""), minute, (second < 10) ? ("0") : (""), second, SpielerName, playerid);
AddLog("LogInOut.log", str);
SendClientMessageToAll(0xFFFFFFFF, DisConnect);
KillTimer(godtimer[playerid]);
}
if(reason == 1)
{
new SpielerName[MAX_PLAYER_NAME],day,month,year,second,minute,hour,str[256];
getdate(year,month,day);
gettime(hour,minute,second);
GetPlayerName(playerid,SpielerName,sizeof(SpielerName));
new DisConnect[256];
format(DisConnect,sizeof(DisConnect),"%s (%d) hat sich ausgeloggt!",SpielerName,playerid);
format(str,sizeof(str),"[LOGOUT][%d.%d.%d][%s%d:%s%d:%s%d]%s (%d) hat sich ausgeloggt\r\n" ,day,month,year, (hour < 10) ? ("0") : (""), hour+0, (minute < 10) ? ("0") : (""), minute, (second < 10) ? ("0") : (""), second, SpielerName, playerid);
AddLog("LogInOut.log", str);
SendClientMessageToAll(0xFFFFFFFF, DisConnect);
KillTimer(godtimer[playerid]);
}
if(reason == 2)
{
new SpielerName[MAX_PLAYER_NAME],day,month,year,second,minute,hour,str[256];
getdate(year,month,day);
gettime(hour,minute,second);
GetPlayerName(playerid,SpielerName,sizeof(SpielerName));
new DisConnect[256];
format(DisConnect,sizeof(DisConnect),"%s (%d) wurde gekickt!",SpielerName,playerid);
format(str,sizeof(str),"[LOGOUT][%d.%d.%d][%s%d:%s%d:%s%d]%s (%d) wurde gekickt\r\n" ,day,month,year, (hour < 10) ? ("0") : (""), hour+0, (minute < 10) ? ("0") : (""), minute, (second < 10) ? ("0") : (""), second, SpielerName, playerid);
AddLog("LogInOut.log", str);
SendClientMessageToAll(0xFFFFFFFF, DisConnect);
KillTimer(godtimer[playerid]);
}
return 1;
} -
also wenn du garkeine ahnung hast, dann lade dir mal fertige kleinere scripts runter und editier die erstma.schau dir andere scripts an und les ein par tutorials..
iwan versuchste das dann selber nachzubaun, mit deinen eigenen vorstellungen. wenn du dann iwo nicht weiter kommst, kannst du fragen.
ich kann dir erklären wie man autos auf dem server bekommt. in deinem GTA ordner befindet sich eine datei die nennt sich "samp_debug" oder so ähnlich.
diese öffnest du und klickst gleich den 1. kasten an. nun wenn du connected bist, bist du cj iwo in vinewood(ls). du kannst nun mit /vsel (vehicleselect) autos aussuchen.
wenn du nun ein auto hast, dann fährste dahin wo es stehen soll und machst /save auto 1(auto 1 ist bsp name).nun findest du in deinem GTA ordner eine datei: "savepostions.txt" diese öffnest du und da steht nun: AddStaticVehicle(...);//auto 1.
du kopierst das und packst das in deinem script unter OnGameModeInit() :
OnGameModeInit()
{
//hier die zeile mit dem auto rein kopieren
return 1;
} -
es giebt ein limit von objecten die man createn kann. genauso giebt es ein limit für pickups und sowas. irgentwann wennde dein script immer weiter ausbaust, brauchste einen streamer, dieser umgeht das limit von objecten, pickups etc.
wenn du ganz normal objecte createst, sind sie immer da. bei einem streamer werden sie nur created wenn man in deren nähe ist, also warum sollen 20000 objecte in ls da sein wenn du in sf bist.//edit: ich habe nun ma versucht den streamer in meinen gm einzubauen.da ich nicht perfekt englisch kann, konnte ich die installations nur so halb verstehen.
ich habe es nun mal so:#include <streamer>
#define STREAMER_TYPE_OBJECT (0)
#define STREAMER_TYPE_PICKUP (1)
#define STREAMER_TYPE_CP (2)
#define STREAMER_TYPE_RACE_CP (3)
#define STREAMER_TYPE_MAP_ICON (4)
#define STREAMER_TYPE_3D_TEXT_LABEL (5)
#define STREAMER_TYPE_AREA (6)enum
{
E_STREAMER_ATTACHED_PLAYER,
E_STREAMER_ATTACHED_VEHICLE,
E_STREAMER_COLOR,
E_STREAMER_DISTANCE,
E_STREAMER_DRAW_DISTANCE,
E_STREAMER_EXTRA_ID,
E_STREAMER_INTERIOR_ID,
E_STREAMER_MARKER_TYPE,
E_STREAMER_MAX_X,
E_STREAMER_MAX_Y,
E_STREAMER_MAX_Z,
E_STREAMER_MIN_X,
E_STREAMER_MIN_Y,
E_STREAMER_MIN_Z,
E_STREAMER_MODEL_ID,
E_STREAMER_NEXT_X,
E_STREAMER_NEXT_Y,
E_STREAMER_NEXT_Z,
E_STREAMER_PLAYER_ID,
E_STREAMER_R_X,
E_STREAMER_R_Y,
E_STREAMER_R_Z,
E_STREAMER_SIZE,
E_STREAMER_TEST_LOS,
E_STREAMER_TYPE,
E_STREAMER_WORLD_ID,
E_STREAMER_X,
E_STREAMER_Y,
E_STREAMER_Z
}OnGameModeInit()
{
CreateDynamicObject(3550, 665.47406005859, -1218.7105712891, 18.083883285522, 0, 0, 332.21020507813,-1);
return 1;
}ich habe ein ordner mit dem namen "plugins" wo ich die streamer.dll rein gemacht habe (habe windows).
ich habe in die .cfg folgendes eingetragen: "plugins streamer"
die .inc datei ist im /pawno/include ordner drinne.folgende warnings bekomme ich:
C:\Users\Simon Siggelkow\Desktop\Pawno\pawno\include\streamer.inc(284) : warning 201: redefinition of constant/macro (symbol "OnPlayerConnect")
C:\Users\Simon Siggelkow\Desktop\Pawno\pawno\include\streamer.inc(308) : warning 201: redefinition of constant/macro (symbol "OnPlayerDisconnect")
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase2 Warnings.
-
ich werde mir den mal angucken, das ist ja so ein streamer der alles streamen kann, der ist sogar noch besser..
-
wie meinst du das? verstehe nicht so genau was du damit meinst..
-
Guten Tag.
Ich wollte gerade Einsteins Objectstreamer auf meinen GM laden. ich habe alles gemacht was in der anleitung stand.
doch ich habe 2 errors wegen weil 2 sachen nicht definiert sind. diese sollte ich aber laut anleitung ins script einbauen. ich glaube wenn diese beiden errors beseitigt sind, bekomme ich nochmehr erros. hier ma ein script ausschnitt:
//includes:
#include <a_samp>
#include <dini>
#include "../include/gl_common.inc"
#include <Geldcheat>
#include <Obj_Streamer>public OnGameModeInit()
{
StreamObject_OnGameModeInit();
//anderer kram
//Objekte:
CreateObjectToStream(3550, 665.47406005859, -1218.7105712891, 18.083883285522, 0, 0, 332.21020507813);
CreateObjectToStream(3550, 667.41821289063, -1213.8530273438, 19.705272674561, 0, 0, 322.28527832031);
CreateObjectToStream(3550, 667.08471679688, -1217.2752685547, 19.158103942871, 0, 0, 326.25524902344);
CreateObjectToStream(987, 2561.3598632813, 1704.4489746094, 14.5703125, 0, 0, 268.69067382813);
CreateObjectToStream(987, 2561.263671875, 1683.447265625, 14.617134094238, 0, 0, 91.309509277344);
CreateObjectToStream(987, 2521.0380859375, 1834.3526611328, 13.8203125, 0, 0, 270.67565917969);
CreateObjectToStream(987, 2521.4526367188, 1811.6804199219, 13.727736473083, 0, 0, 91.309509277344);
CreateObjectToStream(987, -584.66076660156, 2619.4235839844, 52.515625, 0, 0, 7.93994140625);
CreateObjectToStream(987, -585.21118164063, 2607.4899902344, 52.434181213379, 0, 0, 87.339508056641);
CreateObjectToStream(987, -598.560546875, 2611.22265625, 64.836776733398, 0, 0, 262.73571777344);
CreateObjectToStream(987, -600.45159912109, 2600.6057128906, 64.586776733398, 0, 0, 274.64562988281);
CreateObjectToStream(987, -599.28234863281, 2576.7917480469, 64.586776733398, 0, 0, 91.309509277344);
CreateObjectToStream(987, -589.73358154297, 2576.1977539063, 52.515625, 0, 0, 284.57055664063);
CreateObjectToStream(987, -586.74835205078, 2564.7036132813, 52.526832580566, 0, 0, 7.93994140625);
CreateObjectToStream(987, -575.01403808594, 2566.25390625, 52.515625, 0, 0, 0);
CreateObjectToStream(987, -563.06384277344, 2566.2517089844, 52.515625, 0, 0, 0);
CreateObjectToStream(987, -553.74554443359, 2566.3601074219, 52.515625, 0, 0, 358.01501464844);
CreateObjectToStream(987, -572.83367919922, 2621.0463867188, 52.520141601563, 0, 0, 0);
CreateObjectToStream(987, -560.91033935547, 2621.0705566406, 52.515625, 0, 0, 0);
CreateObjectToStream(987, -553.23638916016, 2621.2019042969, 52.515625, 0, 0, 0);
CreateObjectToStream(3749, -505.88491821289, 2592.9636230469, 58.318447113037, 0, 0, 268.69067382813);
CreateObjectToStream(987, -541.31896972656, 2621.0966796875, 52.515625, 0, 0, 87.339508056641);
CreateObjectToStream(987, -540.89483642578, 2627.1237792969, 52.623065948486, 0, 0, 87.339508056641);
CreateObjectToStream(987, -540.40008544922, 2638.94140625, 52.4140625, 0, 0, 0);
CreateObjectToStream(987, -528.57482910156, 2638.6479492188, 52.415424346924, 0, 0, 0);
CreateObjectToStream(987, -516.6884765625, 2638.5881347656, 52.4140625, 0, 0, 0);
CreateObjectToStream(987, -504.74844360352, 2638.5346679688, 52.515625, 0, 0, 268.69067382813);
CreateObjectToStream(987, -504.97741699219, 2626.6123046875, 52.515625, 0, 0, 268.69067382813);
CreateObjectToStream(987, -505.24591064453, 2614.65234375, 52.515625, 0, 0, 268.69067382813);
CreateObjectToStream(987, -541.76330566406, 2565.9963378906, 52.415424346924, 0, 0, 268.69067382813);
CreateObjectToStream(987, -542.04486083984, 2559.9758300781, 52.52751159668, 0, 0, 268.69067382813);
CreateObjectToStream(987, -542.20635986328, 2548.2939453125, 52.4140625, 0, 0, 354.04504394531);
CreateObjectToStream(987, -530.36059570313, 2547.0275878906, 52.515625, 0, 0, 0);
CreateObjectToStream(987, -518.48541259766, 2547.0476074219, 52.515625, 0, 0, 0);
CreateObjectToStream(987, -506.59686279297, 2546.9821777344, 52.515625, 0, 0, 89.324493408203);
CreateObjectToStream(987, -506.49603271484, 2558.9409179688, 52.515625, 0, 0, 87.339508056641);
CreateObjectToStream(987, -506.00424194336, 2570.9116210938, 52.517013549805, 0, 0, 89.324493408203);
CreateObjectToStream(5822, -559.00659179688, 2574.0439453125, 64.341552734375, 0, 0, 95.279479980469);
CreateObjectToStream(13011, -559.50451660156, 2582.9697265625, 66.545059204102, 0, 0, 179.36633300781);
CreateObjectToStream(3934, -587.99645996094, 2584.6188964844, 64.836776733398, 0, 0, 0);
CreateObjectToStream(3934, -587.26300048828, 2602.9362792969, 64.836776733398, 0, 0, 0);
CreateObjectToStream(3934, -565.23828125, 2597.8249511719, 64.836776733398, 0, 0, 0);
CreateObjectToStream(14410, -545.14147949219, 2574.8288574219, 53.181903839111, 0, 0, 180.63439941406);
CreateObjectToStream(997, -546.66784667969, 2568.1655273438, 56.369403839111, 0, 0, 0);
CreateObjectToStream(997, -543.57055664063, 2572.1936035156, 56.369403839111, 0, 0, 270.67565917969);
CreateObjectToStream(980, 2560.3645019531, 1693.1411132813, 6.3437042236328, 0, 0, 270.67565917969);
CreateObjectToStream(980, 2521.3671875, 1821.8988037109, 6.0937042236328, 0, 0, 270.67565917969);
CreateObjectToStream(3528, 2558.9301757813, 1692.6024169922, 23.601459503174, 0, 0, 182.61938476563);
CreateObjectToStream(3528, 2519.5, 1823.1879882813, 23.585538864136, 0, 0, 175.39636230469);
CreateObjectToStream(14608, 2515.5681152344, 1810.6800537109, 12.091327667236, 0, 0, 0);
CreateObjectToStream(14608, 2514.7221679688, 1836.3612060547, 12.091327667236, 0, 0, 91.309509277344);
CreateObjectToStream(14608, 2555.5122070313, 1680.6484375, 12.091327667236, 0, 0, 93.294494628906);
CreateObjectToStream(14608, 2555.0600585938, 1706.3712158203, 12.091327667236, 0, 0, 0);
CreateObjectToStream(14637, 2597.9919433594, 1891.6800537109, 25.313245773315, 0, 0, 270.67565917969);
CreateObjectToStream(3528, 2597.630859375, 1889.6165771484, 25.481351852417, 0, 0, 266.70568847656);
CreateObjectToStream(6965, 2574.1262207031, 1825.0579833984, 13.518363952637, 0, 0, 0);
CreateObjectToStream(974, 1811.5496826172, -1899.0367431641, 13.501654624939, 0, 0, 268.69067382813);
CreateObjectToStream(974, 1808.3286132813, -1884.1889648438, 15.183589935303, 0, 0, 0);
CreateObjectToStream(974, 1801.64453125,-1884.1889648438, 15.183589935303, 0, 0, 0);
CreateObjectToStream(974, 1794.9666748047, -1884.1889648438, 15.183589935303, 0, 0, 0);
CreateObjectToStream(974, 1788.7661132813, -1882.7036132813, 15.183589935303, 0, 0, 332.20581054688);
CreateObjectToStream(984, 1775.9010009766, -1942.3186035156, 13.202949523926, 0, 0, 270.67565917969);
CreateObjectToStream(984, 1763.0822753906, -1942.4310302734, 13.212169647217, 0, 0, 270.67565917969);
//das sind nur ein paar.. ich habe noch mehr..
//anderer kram
return 1;
}public OnGameModeExit()
{
StreamObject_OnGameModeExit();
//anderer kram
return 1;
}public OnPlayerDisconnect(playerid, reason)
{
StreamObject_OnPlayerDisconnect(playerid);
//anderer kram
return 1;
}und hier die 2 errors:
C:\Users\Simon Siggelkow\Desktop\Pawno\gamemodes\dmserverobject.pwn(756) : error 017: undefined symbol "StreamObject_OnGameModeInit"
C:\Users\Simon Siggelkow\Desktop\Pawno\gamemodes\dmserverobject.pwn(1480) : error 017: undefined symbol "StreamObject_OnGameModeExit"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase2 Errors.
-
hmm doch glaube schon, du musst das mal ausprobieren unter OnPlayerText, weil wenn du normal schreibst, wird die nachricht ja verschickt, automatisch und wennde dann noch das mit Admin: einbaust wirds doppelt verschickt. bsp:
du schreibst: "Hi"
im Chat:
XY: Hi
Admin XY: Hies könnte haber kalppen wennde bei OnPlayerText return 1 zu return 0 machst also:
OnPlayerText(...)
{
//wenn der spieler admin ist, hier musst deine Admin abfrage hin
{
return 0;
}
return 1;
}ich weiß aber net ob man es so machen kann..
-
ich habe hier mal ein dcmd für dich. mit /say schreibt man dann kommt da: Admin blablub: TEXT
ich kanns dir erklären:
zuerst fragste den namen ab:
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));nun machste folgendes:
new string[256];
format(string,sizeof(string),"Admin %s: %s",name,text);
SendClientMessageToAll(Farbe,string);das problem ist hier, das du abfragen musst was er geschrieben hat, wennde das unter OnPlayerText machst, wo der text schon definiert ist, wird die nachricht wohl doppelt gesendet: einmal ohne Admin blablub: text und einmal mit.
deswegen musste dir eigene befehle machen wie /o, /say oder so.
hier mal meins:
//unter den includes:
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1OnPlayerCommandText()
{
dcmd(say,3,cmdtext);
return 1;
}//außerhalb eines publics:
dcmd_say(playerid,params[])
{
new message[256];
if(sscanf(params, "s", message))
{
return SendClientMessage(playerid,COLOR_RED,"Benutzung: /say [Nachricht]");
}
else if(Mute[playerid] == 1)
{
return SendClientMessage(playerid, COLOR_RED, " Du bist gemutet, warte bis ein Admin dich unmutet!");
}
else
{
if(SpielerInfo[playerid][alvl]>=1)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
new string[256];
format(string, sizeof(string), "Admin %s: %s", name, message);
SendClientMessageToAll(0xFF9100FF, string);
}
else
{
SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin!");
}
}
return 1;
}
//wennde sscanf noch net hast, ganz unten im script:stock sscanf(string[], format[], {Float,_}:...)
{
#if defined isnull
if (isnull(string))
#else
if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
#endif
{
return format[0];
}
#pragma tabsize 4
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__
#undef foreach
#undef __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;
}den command musste deinem admin system anpassen...
-
hmm kapier das immer noch nicht :d
am einfachsten machste es mit einem dcmd:
oben unter den #includes:
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1unter OnPlayerCommandText:
public OnPlayerCommandText(playerid, cmdtext[])
{
//dcmd(cmd,buchstabenanzahl,cmdtext);
dcmd(plook,5,cmdtext);
//hier das was du sonst noch unter OnPlayerCommandText hast..
return 1;
}dann außerhalb eines publics:
dcmd_plook(playerid,params[])
{
new pID;
if(sscanf(params, "u", pID))
{
return SendClientMessage(playerid,0xFF0000FF,"Benutzung: /plook [id]");
}
else if(!IsPlayerConnected(pID))
{
return SendClientMessage(playerid,0xFF0000FF,"Spieler mit ID nicht Online!");
}
else
{
//Bei SetPlayerLookAtPlayer(playerid,pID); ist error, undefined..deshalb nehme ich mal playerSpectatePlayer, glaube das ist das was du meinst
PlayerSpectatePlayer(playerid,pID,SPECTATE_MODE_NORMAL);
}
return 1;
}(hier hatte ich das problem, das er mit SetPlayerLookAtPlayer nichts anfangen konnte.
falls du sscanf nicht definiert hast, mach am besten ganz unten im script das hier noch rein:
stock sscanf(string[], format[], {Float,_}:...)
{
#if defined isnull
if (isnull(string))
#else
if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
#endif
{
return format[0];
}
#pragma tabsize 4
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__
#undef foreach
#undef __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;
}