Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*---------------------------------------
- /--------\ /--------\ /\
- | | | | / \
- | | | | / \ |-----
- | | |--------/ / \ |
- | | | |--------| \----\
- | | | | | |
- \--------/ | | | -----/
- OBJECTSTREAMER & MAPEDITOR
- VERSION 5.1.1
- STREAM ENGINE FS
- ---------------------------------------*/
- //_____EINSTELLUNGEN______
- #define MAX_STREAMOBJ 8000 //Objektlimit (Total)
- #define MAX_SLOTS 500 //Deine Slots
- //________OPTIONEN________
- #define LOG_ACTIVE 1 //opa_objects.log
- #define PANEL 0 //Admin-/Mapperpanel in der unteren rechten Ecke anzeigen?
- #define ANTIFAIL 1 //Anti-Cfg-Fail aktivieren?
- #define CALLBACK 0 //OnObjectStreamIn aktivieren?
- #define MODE_ADMIN 1 //OnStreamerAdminRequest aktivieren?
- #define VIRTUALWORLD 1 //SetObjectVirtualWorld aktivieren?
- #define INTERIOR 1 //LinkObjectToInterior aktivieren?
- #define CLIENTSTREAM 0 //Den SA:MP 0.3b/c/d Client-Streamer aktivieren?
- #define DISPLAY 0 //Mapladen: 0=Nichts, 1=GameText, 2=TextDraw
- //________INTERFACE_______
- #define CHAT_COLOR 0xD3D3FFFF //Farbcode
- #define LABEL_COLOR 0xBEBEBEFF //Farbcode
- #define LABEL_COLOR2 0x00FF00FF //Farbcode (Beim ausgewählten Objekt)
- #define LABEL_RANGE 60.0 //Range
- //__PROFI-EINSTELLUNGEN___
- #define DIALOG_ID 8072 //Sollte nicht in anderen Scripts verwendet werden
- #define DIALOG_ID2 8073 //Sollte nicht in anderen Scripts verwendet werden
- #define DIALOG_ID4 8074 //Sollte nicht in anderen Scripts verwendet werden
- #define DIALOG_ID5 8075 //Sollte nicht in anderen Scripts verwendet werden
- #define DIALOG_ID6 8076 //Sollte nicht in anderen Scripts verwendet werden
- #define DIALOG_ID7 8077 //Sollte nicht in anderen Scripts verwendet werden
- #define DIALOG_ID9 8078 //Sollte nicht in anderen Scripts verwendet werden
- #define DIALOG_ID10 8079 //Sollte nicht in anderen Scripts verwendet werden
- #define DIALOG_ID11 8080 //Sollte nicht in anderen Scripts verwendet werden
- #define DIALOG_ID12 8081 //Sollte nicht in anderen Scripts verwendet werden
- #define DIALOG_ID13 8082 //Sollte nicht in anderen Scripts verwendet werden
- #define DIALOG_ID14 8083 //Sollte nicht in anderen Scripts verwendet werden
- #define DIALOG_ID15 8084 //Sollte nicht in anderen Scripts verwendet werden
- #define DIALOG_ID16 8085 //Sollte nicht in anderen Scripts verwendet werden
- #define DIALOG_ID17 8086 //Sollte nicht in anderen Scripts verwendet werden
- #define DIALOG_ID18 8087 //Sollte nicht in anderen Scripts verwendet werden
- #define DIALOG_ID19 8088 //Sollte nicht in anderen Scripts verwendet werden
- #define DIALOG_ID20 8089 //Sollte nicht in anderen Scripts verwendet werden
- #define DIALOG_ID21 8090 //Sollte nicht in anderen Scripts verwendet werden
- #define DIALOG_ID23 8091 //Sollte nicht in anderen Scripts verwendet werden
- #define DIALOG_ID24 8092 //Sollte nicht in anderen Scripts verwendet werden
- #define CONFIG_FILE "opa_objects/streamer.cfg" //Cfg-Speicherort
- #define LOG_FILE "opa_objects/opa_objects.log" //Log-Speicherort
- #define SAVEOBJ_FILE "opa_objects/savedobjects.txt" //"/saveobj"-Speicherort
- /*-------------------------------------*/
- #define VERSION "5.1.0"
- #include <a_samp>
- #include <ocmd>
- forward test();
- forward remoteObject(xx1,Float:xx2,Float:xx3,Float:xx4,Float:xx5,Float:xx6,Float:xx7);
- #if VIRTUALWORLD==1
- forward remoteVirtual(xx1,xx2);
- #endif
- #if INTERIOR==1
- forward remoteInt(xx1,xx2);
- #endif
- #if MODE_ADMIN==1
- isPlayerModeAdmin(playerid)return(CallRemoteFunction("OnStreamerAdminRequest","d",playerid)||(IsPlayerAdmin(playerid)));
- #define IsPlayerAdmin isPlayerModeAdmin
- #endif
- #define TEXTDRAW DISPLAY
- forward remoteMove(xx1,Float:xx2,Float:xx3,Float:xx4,Float:xx5,Float:xx6,Float:xx7,Float:xx8);
- forward remoteMoveRot(xx1,Float:xx2,Float:xx3,Float:xx4,xx5);
- forward remoteSetPos(xx1,Float:xx2,Float:xx3,Float:xx4);
- forward remoteSetRot(xx1,Float:xx2,Float:xx3,Float:xx4);
- forward remoteDestroy(xx1);
- forward remoteStop(xx1);
- forward remoteConnectGM();
- forward remoteConnectFS();
- forward remoteMakeWait(playerid);
- forward remoteObjectEx();
- forward remoteDestroyEx();
- forward remoteIsStreamed(xx1,xx2);
- forward remoteIsMapper(xx1);
- public remoteIsMapper(xx1)
- {
- if(IsPlayerAdmin(xx1))return 1;
- if(GetPVarInt(xx1,"ooMap"))return 1;
- return 0;
- }
- forward Q();
- #if PANEL==1
- forward panelUA();
- new Text:panel[MAX_SLOTS],bool:h_p[MAX_SLOTS];
- #endif
- new obj,DRAW_DISTANCE=200,MAXPLAYEROBJ=1000,kill,timeT=457,Qtimer;
- enum oen
- {
- mod,
- #if VIRTUALWORLD==1
- vw,
- #endif
- #if INTERIOR==1
- inter,
- #endif
- Float:x,
- Float:y,
- Float:z,
- Float:rx,
- Float:ry,
- Float:rz,
- resID
- };
- #define maxRes 50
- new resource,resName[maxRes][50];
- new p[MAX_SLOTS][MAX_STREAMOBJ],o[MAX_STREAMOBJ][oen],bool:invalid[MAX_STREAMOBJ];
- new bool:warn[MAX_SLOTS],bool:wait[MAX_SLOTS],admin=-1;
- new PlayerText3D:noob[MAX_STREAMOBJ],bool:noob4[MAX_STREAMOBJ],edit=-1,step=5,exobjects;
- new olist[10],anfang,bool:nichtnochmal,lastfile[50],pcount,dynamicPlayerBuffer;
- #define MAX_ENTRY 25
- new slist[MAX_ENTRY];
- #if TEXTDRAW==2
- forward hideText(playerid);
- new Text:Textdraw0,Text:Textdraw1;
- #endif
- #define DINI_MAX_STRING 255
- public OnFilterScriptInit()
- {
- format(resName[0],50,"Gamemode/Filterscript");
- print("\n...Opas Objectstremer loading [Stream engine FS]...\n");
- #if LOG_ACTIVE==1
- if(!fexist(LOG_FILE))
- {
- new File:ffhandle=fopen(LOG_FILE,io_write);
- fclose(ffhandle);
- }
- #endif
- new xstr[100];
- format(xstr,sizeof xstr,"Starte Streamer (Version %s)...",VERSION);
- log("Starte streamer...");
- #if VIRTUALWORLD==1
- for(new n;n<MAX_STREAMOBJ;n++)o[n][vw]=-1;
- #endif
- #if INTERIOR==1
- for(new n;n<MAX_STREAMOBJ;n++)o[n][inter]=-1;
- #endif
- if(fexist("opa_objects/opa_objects.cfg"))updateCFG();
- if(fexist(CONFIG_FILE))
- {
- new xz=strval(dini_Get(CONFIG_FILE,"drawdistance"));
- #if ANTIFAIL==1
- if(xz<5||xz>400)
- {
- log("[Antifail] drawdistance sollte 5-400 sein");
- xz=125;
- }
- #endif
- DRAW_DISTANCE=xz;
- xz=strval(dini_Get(CONFIG_FILE,"maxplayerobj"));
- #if ANTIFAIL==1
- if(xz<1||xz>1000)
- {
- log("[Antifail] maxplayerobj sollte 1-1000 sein");
- xz=1000;
- }
- #endif
- MAXPLAYEROBJ=xz;
- xz=strval(dini_Get(CONFIG_FILE,"timer"));
- #if ANTIFAIL==1
- if(xz<100||xz>3500)
- {
- log("[Antifail] timer sollte 100-3500 sein");
- xz=457;
- }
- #endif
- timeT=xz;
- xz=strval(dini_Get(CONFIG_FILE,"step"));
- #if ANTIFAIL==1
- if(xz<1||xz>100)
- {
- log("[Antifail] step sollte 1-100 sein");
- xz=5;
- }
- #endif
- step=xz;
- new cur[100],curI,str[500];
- format(str,sizeof str,dini_Get(CONFIG_FILE,"maps"));
- for(new i;i<500;i++)
- {
- if(!str[i]||str[i]==' '||str[i]=='\n')
- {
- format(cur,sizeof cur,"%s.map",cur);
- if(i>1)loadMap(cur);
- curI=0;
- for(new ii;ii<sizeof cur;ii++)cur[ii]=0;
- if(!str[i]||str[i]=='\n')break;
- }
- else
- {
- cur[curI]=str[i];
- curI++;
- }
- }
- }
- else
- {
- new File:hn=fopen(CONFIG_FILE,io_write);
- fwrite(hn,"maps \r\ndrawdistance 200\r\nmaxplayerobj 1000\r\ntimer 457\r\nstep 5\r\n");
- fclose(hn);
- }
- for(new i;i<MAX_SLOTS;i++)if(IsPlayerConnected(i))dynamicPlayerBuffer=i;
- kill=SetTimer("test",timeT,1);
- #if TEXTDRAW==2
- Textdraw0 = TextDrawCreate(307.000000,181.000000,"~n~LADE...~n~BITTE WARTEN~n~_");
- TextDrawUseBox(Textdraw0,1);
- TextDrawBoxColor(Textdraw0,0x00000066);
- TextDrawTextSize(Textdraw0,0.000000,131.000000);
- TextDrawAlignment(Textdraw0,2);
- TextDrawBackgroundColor(Textdraw0,0xff000033);
- TextDrawFont(Textdraw0,1);
- TextDrawLetterSize(Textdraw0,0.299999,1.100000);
- TextDrawColor(Textdraw0,0xffffffff);
- TextDrawSetOutline(Textdraw0,1);
- TextDrawSetProportional(Textdraw0,1);
- TextDrawSetShadow(Textdraw0,1);
- Textdraw1 = TextDrawCreate(307.000000,181.000000,"~n~LADE MAP...~n~FERTIG~n~_");
- TextDrawUseBox(Textdraw1,1);
- TextDrawBoxColor(Textdraw1,0x00000066);
- TextDrawTextSize(Textdraw1,0.000000,131.000000);
- TextDrawAlignment(Textdraw1,2);
- TextDrawBackgroundColor(Textdraw1,0x00ff0033);
- TextDrawFont(Textdraw1,1);
- TextDrawLetterSize(Textdraw1,0.299999,1.100000);
- TextDrawColor(Textdraw1,0xffffffff);
- TextDrawSetOutline(Textdraw1,1);
- TextDrawSetProportional(Textdraw1,1);
- TextDrawSetShadow(Textdraw1,1);
- #endif
- #if PANEL==1
- SetTimer("panelUA",3000,1);
- #endif
- log("Successfully started!");
- return 1;
- }
- updateCFG()
- {
- if(fexist(CONFIG_FILE))return 0;
- new File:ha=fopen("opa_objects/opa_objects.cfg",io_read),File:hn=fopen(CONFIG_FILE,io_write);
- if(!ha||!hn)return log("FEHLER: Die alte opa_objects.cfg konnte nicht zur neuen streamer.cfg umgewandelt werden.");
- new str[600];
- fwrite(hn,"maps \r\n");
- while(fread(ha,str))
- {
- for(new i;;i++)
- {
- if(str[i]=='=')str[i]=' ';
- if(str[i]=='='||!str[i])break;
- }
- fwrite(hn,str);
- }
- fclose(ha);
- fclose(hn);
- fremove("opa_objects/opa_objects.cfg");
- return log("Die alte opa_objects.cfg wurde zur neuen streamer.cfg umgewandelt.");
- }
- #if PANEL==1
- public panelUA()for(new i;i<dynamicPlayerBuffer;i++)if((IsPlayerAdmin(i)||GetPVarInt(i,"ooMap"))&&(GetPVarInt(i,"ooPanel")))panelU(i);
- panelU(i)
- {
- if(h_p[i])return;
- new str[150],ef=effort(),sef=seffort(),tef=teff();
- if(admin==i)
- {
- format(str,sizeof str,"~p~/map - /object - /olist~n~~w~Space/Alt - Speed~n~~w~Shift - Z~n~~w~Strg - Camera~n~~w~Enter - Menu");
- }
- else if(IsPlayerAdmin(i))
- {
- format(str,sizeof str,"~b~~h~Admin~n~~b~~h~/streamer - /map~n~%sPlayers: %03d~n~%sServer: %03d~n~%sTimer: %d~n~",(ef<40?("~g~"):(ef<80?("~y~"):("~r~"))),ef,(sef<40?("~g~"):(sef<80?("~y~"):("~r~"))),sef,(tef<20000?("~g~"):(tef<40000?("~y~"):("~r~"))),tef);
- }
- else if(GetPVarInt(i,"ooMap"))
- {
- format(str,sizeof str,"~r~~h~Mapper~n~~r~~h~/map~n~~n~~n~~n~");
- }
- else return;
- format(str,sizeof str,"OPAS OBJECTSTREAMER~n~%s",str);
- TextDrawSetString(panel[i],str);
- TextDrawShowForPlayer(i,panel[i]);
- }
- #endif
- public OnFilterScriptExit()
- {
- fsexit();
- return 1;
- }
- public OnGameModeExit()
- {
- fsexit();
- SendRconCommand("reloadfs opa_objects");
- return 1;
- }
- stock fsexit()
- {
- for(new i;i<MAX_SLOTS;i++)
- {
- if(IsPlayerConnected(i))
- {
- for(new n;n<obj;n++)
- {
- if(p[i][n]!=0)DestroyPlayerObject(i,p[i][n]);
- }
- }
- }
- settings();
- KillTimer(kill);
- CallRemoteFunction("remoteExit","");
- }
- settings()
- {
- if(!fexist(CONFIG_FILE))
- {
- new File:ffhandle=fopen(CONFIG_FILE,io_write);
- fclose(ffhandle);
- }
- new stt[120];
- format(stt,sizeof stt,"%d",DRAW_DISTANCE);
- dini_Set(CONFIG_FILE,"drawdistance",stt);
- format(stt,sizeof stt,"%d",((!exobjects)?(MAXPLAYEROBJ):((MAXPLAYEROBJ+exobjects>1000)?(1000):(MAXPLAYEROBJ+exobjects))));
- dini_Set(CONFIG_FILE,"maxplayerobj",stt);
- format(stt,sizeof stt,"%d",timeT);
- dini_Set(CONFIG_FILE,"timer",stt);
- format(stt,sizeof stt,"%d",step);
- dini_Set(CONFIG_FILE,"step",stt);
- }
- public remoteIsStreamed(xx1,xx2)
- {
- if(!p[xx2][xx1])return 0;
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- if(playerid>dynamicPlayerBuffer)dynamicPlayerBuffer=playerid;
- #if PANEL==1
- panel[playerid] = TextDrawCreate(554.000000,393.000000,"-");
- TextDrawUseBox(panel[playerid],1);
- TextDrawBoxColor(panel[playerid],0x00000033);
- TextDrawTextSize(panel[playerid],694.000000,0.000000);
- TextDrawAlignment(panel[playerid],1);
- TextDrawBackgroundColor(panel[playerid],0x000000FF);
- TextDrawFont(panel[playerid],1);
- TextDrawLetterSize(panel[playerid],0.199999,1.000000);
- TextDrawColor(panel[playerid],0xffffffff);
- TextDrawSetOutline(panel[playerid],1);
- TextDrawSetProportional(panel[playerid],1);
- TextDrawSetShadow(panel[playerid],1);
- #endif
- if(!IsPlayerNPC(playerid))pcount++;
- }
- ocmd:streamer(playerid,dump[])
- {
- if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,CHAT_COLOR,"Du bist kein Admin!");
- return mainmenu(playerid);
- }
- ocmd:map(playerid,dump[])
- {
- if(!IsPlayerAdmin(playerid)&&!GetPVarInt(playerid,"ooMap"))return SendClientMessage(playerid,CHAT_COLOR,"Du bist kein Admin/Mapper!");
- return mapmenu(playerid);
- }
- ocmd:olist(playerid,dump[])
- {
- if(!IsPlayerAdmin(playerid)&&!GetPVarInt(playerid,"ooMap"))return SendClientMessage(playerid,CHAT_COLOR,"Du bist kein Admin/Mapper!");
- if(admin!=playerid)return SendClientMessage(playerid,CHAT_COLOR,"Du hast den Mapeditor nicht aktiviert!");
- return objfile(lastfile);
- }
- ocmd:saveobj(playerid,prm[])
- {
- if(!IsPlayerAdmin(playerid)&&!GetPVarInt(playerid,"ooMap"))return SendClientMessage(playerid,CHAT_COLOR,"Du bist kein Admin/Mapper!");
- if(admin!=playerid)return SendClientMessage(playerid,CHAT_COLOR,"Du hast den Mapeditor nicht aktiviert!");
- new i,com[40];
- if(sscanf(prm,"dz",i,com))return SendClientMessage(playerid,CHAT_COLOR,"/saveobj [objectid] [kommentar]");
- if(i>=MAX_STREAMOBJ||invalid[i]||i<0)return SendClientMessage(playerid,CHAT_COLOR,"Ungültige objectid!");
- if(!fexist(SAVEOBJ_FILE))
- {
- new File:ffhandle=fopen(SAVEOBJ_FILE,io_write);
- fclose(ffhandle);
- }
- new File:log2=fopen(SAVEOBJ_FILE,io_append);
- if(!log2)return SendClientMessage(playerid,CHAT_COLOR,"Speichern fehlgeschlagen");
- new ostr[300];
- #if VIRTUALWORLD==1
- format(ostr,sizeof ostr,"CreateObject(%d,%f,%f,%f,%f,%f,%f,%d);//%s\r\n",o[i][mod],o[i][x],o[i][y],o[i][z],o[i][rx],o[i][ry],o[i][rz],o[i][vw],com);
- #else
- format(ostr,sizeof ostr,"CreateObject(%d,%f,%f,%f,%f,%f,%f);//%s\r\n",o[i][mod],o[i][x],o[i][y],o[i][z],o[i][rx],o[i][ry],o[i][rz],com);
- #endif
- fwrite(log2,ostr);
- fclose(log2);
- new send[128];
- if(!strlen(com))format(send,sizeof send,"Object %d gespeichert",i);
- else format(send,sizeof send,"Object %d gespeichert [%s]",i,com);
- return SendClientMessage(playerid,CHAT_COLOR,send);
- }
- ocmd:object(playerid,prm[])
- {
- if(!IsPlayerAdmin(playerid)&&!GetPVarInt(playerid,"ooMap"))return SendClientMessage(playerid,CHAT_COLOR,"Du bist kein Admin/Mapper!");
- if(admin!=playerid)return SendClientMessage(playerid,CHAT_COLOR,"Du hast den Mapeditor nicht aktiviert!");
- new objid;
- if(sscanf(prm,"d",objid))return ((edit!=-1)?(fuckEdit()):(SendClientMessage(playerid,CHAT_COLOR,"/object [objectid]")));
- if(objid>=obj||invalid[objid]||objid<0)return SendClientMessage(playerid,CHAT_COLOR,"Ungültige objectid!");
- return showobject(playerid,objid);
- }
- #if PANEL==1
- ocmd:togpanel(playerid,prm[])
- {
- if(!IsPlayerAdmin(playerid)&&!GetPVarInt(playerid,"ooMap"))return SendClientMessage(playerid,CHAT_COLOR,"Du bist kein Admin/Mapper!");
- if(!GetPVarInt(playerid,"ooPanel"))SetPVarInt(playerid,"ooPanel",1);
- else
- {
- DeletePVar(playerid,"ooPanel");
- TextDrawHideForPlayer(playerid,panel[playerid]);
- }
- return 1;
- }
- #endif
- explode(const strsrc[], strdest[][], delimiter)
- {
- new li,aNum,len;
- for(new i;i<=strlen(strsrc);i++)if(strsrc[i]==delimiter||i==strlen(strsrc))
- {
- len=strmid(strdest[aNum],strsrc,li,i,128);
- strdest[aNum][len]=0;
- li=i+1;
- aNum++;
- }
- return 1;
- }
- objfile(filenamex[])
- {
- if(!strlen(filenamex))return 0;
- new filename[50];
- format(filename,sizeof filename,"opa_objects/modelid/%s",filenamex);
- if(admin==-1)return 0;
- #define strlim 1024
- new dtxt[strlim];
- if(!fexist(filename))return 0;
- new File:xd=fopen(filename,io_read),zeile[100],zeila[2][100],i;
- for(;;)
- {
- fread(xd,zeile);
- if(i<anfang)
- {
- i++;
- continue;
- }
- if(!strlen(zeile))
- {
- nichtnochmal=true;
- break;
- }
- explode(zeile,zeila,'|');
- olist[i-anfang]=strval(zeila[0]);
- if(i!=anfang)format(dtxt,sizeof dtxt,"%s\n%s",dtxt,zeila[1]);
- else format(dtxt,sizeof dtxt,"%s",zeila[1]);
- i++;
- if(i==anfang+10)break;
- }
- anfang+=10;
- ShowPlayerDialog(admin,DIALOG_ID12,DIALOG_STYLE_LIST,"Opas Objectstreamer - Object hinzufügen",dtxt,"Hinzufügen","Nächste Seite");
- fclose(xd);
- format(lastfile,sizeof lastfile,filenamex);
- return 1;
- }
- public remoteMoveRot(xx1,Float:xx2,Float:xx3,Float:xx4,xx5)
- {
- return remoteMove(xx1,o[xx1][x],o[xx1][y],o[xx1][z],floatdiv(5000.0,float(xx5)),xx2,xx3,xx4);
- }
- mainmenu(playerid)
- {
- new inf[270];
- format(inf,sizeof inf,"\
- Map >>\n\
- Mapper/Admins >>\n\
- Warnungen zurücksetzen\n\
- Playerobject-Limit: %d >>\n\
- Drawdistance: %d\n\
- Timer: %d ms\n\
- Einstellungen speichern\n\
- Info\
- ",MAXPLAYEROBJ,DRAW_DISTANCE,timeT);
- return ShowPlayerDialog(playerid,DIALOG_ID,DIALOG_STYLE_LIST,"Opas Objectstreamer",inf,"OK","Abbrechen");
- }
- mapmenu(playerid)
- {
- if(admin!=playerid)
- {
- if(admin==-1)return ShowPlayerDialog(playerid,DIALOG_ID17,DIALOG_STYLE_MSGBOX,"Opas Objectstreamer - Mapeditor","Du hast den Mapeditor nicht aktiviert\nDer Mapeditor ist aktiviert von: --","Aktivieren","Abbrechen");
- new str[128];
- GetPlayerName(admin,str,sizeof str);
- format(str,sizeof str,"Du hast den Mapeditor nicht aktiviert\nDer Mapeditor ist aktiviert von: %s",str);
- ShowPlayerDialog(playerid,DIALOG_ID18,DIALOG_STYLE_MSGBOX,"Opas Objectstreamer - Mapeditor",str," "," ");
- return 1;
- }
- new inf[270];
- format(inf,sizeof inf,"\
- Neues Objekt (Durchsuchen) >>\n\
- Neues Objekt (Objectliste) >>\n\
- Neues Objekt (ID)\n\
- Map speichern\n\
- Mapeditor deaktivieren\
- ");
- return ShowPlayerDialog(playerid,DIALOG_ID19,DIALOG_STYLE_LIST,"Opas Objectstreamer - Mapeditor",inf,"OK","Abbrechen");
- }
- stock effort()
- {
- new Float:pro;
- for(new i;i<MAX_SLOTS;i++)if(IsPlayerConnected(i)&&!IsPlayerNPC(i))
- {
- pro=pro+GetPVarInt(i,"ooCrash");
- }
- pro=floatdiv(pro,pcount);
- pro=floatdiv(pro,MAXPLAYEROBJ);
- return floatround(pro*100);
- }
- stock seffort()
- {
- new pro,worst;
- pro=pcount*obj;
- worst=MAX_STREAMOBJ*MAX_SLOTS;
- new Float:ret=floatdiv(1,floatdiv(worst,pro));
- ret=ret*100;
- return floatround(ret);
- }
- stock teff()
- {
- return pcount*obj;
- }
- showobject(playerid,oid)
- {
- if(edit!=-1)fuckEdit();
- if(Qtimer!=-1)KillTimer(Qtimer);
- Qtimer=SetTimer("Q",100,1);
- edit=oid;
- keep(edit);
- TogglePlayerControllable(playerid,0);
- return 1;
- }
- fuckEdit()
- {
- new u=edit;
- edit=-1;
- keep(u);
- if(Qtimer!=-1)
- {
- KillTimer(Qtimer);
- Qtimer=-1;
- SetCameraBehindPlayer(admin);
- TogglePlayerControllable(admin,1);
- findZ(admin);
- }
- return 1;
- }
- new Float:offset[3]={0.0,12.0,1.0};
- public Q()
- {
- if(admin==-1)
- {
- KillTimer(Qtimer);
- Qtimer=-1;
- SetCameraBehindPlayer(admin);
- TogglePlayerControllable(admin,1);
- findZ(admin);
- return;
- }
- if(edit==-1)
- {
- KillTimer(Qtimer);
- Qtimer=-1;
- SetCameraBehindPlayer(admin);
- TogglePlayerControllable(admin,1);
- findZ(admin);
- return;
- }
- new dumm,ud,lr;
- GetPlayerKeys(admin,dumm,ud,lr);
- new Float:bob=(1.3+((dumm&KEY_SPRINT)?(1.5):(0.0))-((dumm&KEY_WALK)?(1.1):(0.0)));
- if(dumm&KEY_FIRE)
- {
- if(dumm&KEY_JUMP)
- {
- if(ud>0)offset[2]-=bob;
- else if(ud<0)offset[2]+=bob;
- }
- else
- {
- if(lr<0)offset[0]+=bob;
- else if(lr>0)offset[0]-=bob;
- if(ud<0)offset[1]-=bob;
- else if(ud>0)offset[1]+=bob;
- }
- }
- else if(dumm&KEY_CROUCH)
- {
- bob*=4;
- if(!(dumm&KEY_JUMP))remoteSetRot(edit,o[edit][rx],o[edit][ry],o[edit][rz]+((lr<0)?(-bob):((lr>0)?(bob):(0.0))));
- else remoteSetRot(edit,o[edit][rx]+((lr<0)?(bob):((lr>0)?(-bob):(0.0))),o[edit][ry]+((ud>0)?(bob):((ud<0)?(-bob):(0.0))),o[edit][rz]);
- }
- else if(dumm&KEY_JUMP)remoteSetPos(edit,o[edit][x],o[edit][y],o[edit][z]+((ud>0)?(-bob):((ud<0)?(bob):(0.0))));
- else if(dumm&KEY_SECONDARY_ATTACK)showobject2(admin,edit);
- else remoteSetPos(edit,o[edit][x]+((lr<0)?(bob):((lr>0)?(-bob):(0.0))),o[edit][y]+((ud>0)?(bob):((ud<0)?(-bob):(0.0))),o[edit][z]);
- SetPlayerCameraPos(admin,o[edit][x]+offset[0],o[edit][y]+offset[1],o[edit][z]+offset[2]);
- SetPlayerCameraLookAt(admin,o[edit][x],o[edit][y],o[edit][z]);
- SetPlayerPos(admin,(o[edit][x]+(1.5*offset[0])),(o[edit][y]+(1.5*offset[1])),(o[edit][z]+(1.5*offset[2])));
- }
- showobject2(playerid,oid)
- {
- new title[100],lol2[320],vwstr[100],intstr[100];
- format(title,sizeof title,"Opas Objectstreamer - Objekt %d",oid);
- #if VIRTUALWORLD==1
- format(vwstr,sizeof vwstr,"World: %d",o[oid][vw]);
- #else
- format(vwstr,sizeof vwstr,"World: --");
- #endif
- #if INTERIOR==1
- format(intstr,sizeof intstr,"Interior: %d",o[oid][inter]);
- #else
- format(intstr,sizeof intstr,"Interior: --");
- #endif
- format(lol2,sizeof lol2,"%s\n%s\nLöschen",vwstr,intstr);
- return ShowPlayerDialog(playerid,DIALOG_ID6,DIALOG_STYLE_LIST,title,lol2,"Ändern...","Done");
- }
- public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[])
- {
- if(IsPlayerAdmin(playerid)||GetPVarInt(playerid,"ooMap"))
- {
- if(dialogid==DIALOG_ID20)
- {
- if(!response)return mainmenu(playerid);
- if(!listitem)return ShowPlayerDialog(playerid,DIALOG_ID16,DIALOG_STYLE_INPUT,"Opas Objectstreamer - Team","Gib den Namen oder die ID des Mappers ein","Hinzufügen","Abbrechen");
- new bob;
- for(new i;i<MAX_SLOTS;i++)
- {
- if(IsPlayerAdmin(i)||GetPVarInt(i,"ooMap"))
- {
- bob++;
- if(bob==listitem)
- {
- if(IsPlayerAdmin(i))
- {
- SendClientMessage(playerid,CHAT_COLOR,"Admins kannst du nicht löschen");
- goto moin;
- }
- DeletePVar(i,"ooMap");
- SendClientMessage(playerid,CHAT_COLOR,"Mapper gelöscht");
- goto moin;
- }
- }
- }
- }
- if(dialogid==DIALOG_ID16)
- {
- if(!response)goto moin;
- new typ;
- if(sscanf(inputtext,"u",typ))return ShowPlayerDialog(playerid,DIALOG_ID16,DIALOG_STYLE_INPUT,"Opas Objectstreamer - Team","Gib den Namen oder die id des Mappers ein\n[[Ungültige Eingabe!]]","Hinzufügen","Abbrechen");
- SetPVarInt(typ,"ooMap",1);
- SendClientMessage(playerid,CHAT_COLOR,"Mapper hinzugefügt");
- SendClientMessage(typ,CHAT_COLOR,"Du wurdest ins Mapper-Team eingeladen");
- goto moin;
- }
- else if(dialogid==DIALOG_ID&&response)
- {
- switch(listitem)
- {
- case 0:
- {
- mapmenu(playerid);
- return 1;
- }
- case 1:
- {
- moin:
- new all[500],one[MAX_PLAYER_NAME];
- format(all,sizeof all,"+ Mapper hinzufügen");
- for(new i;i<MAX_SLOTS;i++)
- {
- if(IsPlayerAdmin(i))
- {
- GetPlayerName(i,one,sizeof one);
- format(all,sizeof all,"%s\n%s [Admin]",all,one);
- }
- else if(GetPVarInt(i,"ooMap"))
- {
- GetPlayerName(i,one,sizeof one);
- format(all,sizeof all,"%s\n%s [Mapper]",all,one);
- }
- }
- ShowPlayerDialog(playerid,DIALOG_ID20,DIALOG_STYLE_LIST,"Opas Objectstreamer - Team",all,"Löschen","Fertig");
- return 1;
- }
- case 4:ShowPlayerDialog(playerid,DIALOG_ID2,DIALOG_STYLE_INPUT,"Opas Objectstreamer - Drawdistance ändern","Gib eine Nummer zwischen 5 und 400 ein","OK","Abbrechen");
- case 2:
- {
- for(new i;i<MAX_SLOTS;i++)warn[i]=false;
- SendClientMessage(playerid,CHAT_COLOR,"Warnungen zurückgesetzt");
- return mainmenu(playerid);
- }
- case 3:
- {
- new xt1[450];
- format(xt1,sizeof xt1,"Playerobject-Limit verändern\n\nSamp Maximum:\t\t1000\nGlobale Objekte:\t%d\n-----------------------------------------\nTop:\t\t\t\t%d\nDeine Einstellung:\t\t%d",exobjects,1000-exobjects,MAXPLAYEROBJ);
- ShowPlayerDialog(playerid,DIALOG_ID4,DIALOG_STYLE_INPUT,"Opas Objectstreamer",xt1,"OK","Abbrechen");
- }
- case 5:ShowPlayerDialog(playerid,DIALOG_ID5,DIALOG_STYLE_INPUT,"Opas Objectstreamer - Timerzeit verändern","Gib eine Zahl zwischen 200 und 3500 ms ein","OK","Abbrechen");
- case 6:
- {
- settings();
- SendClientMessage(playerid,CHAT_COLOR,"Einstellungen gespeichert");
- }
- case 7:ShowPlayerDialog(playerid,DIALOG_ID14,DIALOG_STYLE_LIST,"Opas Objectstreamer - Info","Script by KleinerOpa\n/streamer => Mainmenu\n/map => Mapmenu\n/olist => Letze Objektliste nochmal anzeigen\n/object [id] => Objekt bearbeiten\n/saveobj [id] => Objekt speichern\nBugs? Hilfe benötigt? www.kleiner-opa.de // ICQ 611064955","OK","Zurück");
- }
- return 1;
- }
- else if(dialogid==DIALOG_ID19&&response)
- {
- switch(listitem)
- {
- case 3:ShowPlayerDialog(playerid,DIALOG_ID10,DIALOG_STYLE_INPUT,"Opas Objectstreamer - Map speichern","Gib den Dateinamen ein\nDie Map wird als \"Dateiname.txt\" gespeichert","OK","Abbrechen");
- case 2:ShowPlayerDialog(playerid,DIALOG_ID9,DIALOG_STYLE_INPUT,"Opas Objectstreamer - Objekt hinzufügen","Gib die modelid ein","OK","Abbrechen");
- case 1:ShowPlayerDialog(playerid,DIALOG_ID11,DIALOG_STYLE_LIST,"Opas Objectstreamer - Objekt hinzufügen",\
- "Weapons.txt\nNature.txt\nFun Stuff.txt\nBarriers.txt\nVarious.txt\nVarious II.txt\n\
- Various III.txt\nMisc.txt\nMisc II.txt\nCasino Items.txt\nBar Items.txt\nTables and Chairs.txt\n\
- SAMP.txt\nSAMP2.txt\nStunt.txt\nRoads.txt\nParticles.txt\nClothes.txt\nClothes2.txt\nClothes3.txt\n\
- Clothes4.txt\nVarious IV.txt\nXMas.txt\n0.3d.txt\n\
- Namen eingeben...","OK","Abbrechen");
- case 4:
- {
- logout();
- SendClientMessage(playerid,CHAT_COLOR,"Mapeditor deaktiviert");
- }
- case 0:searchmenu(playerid);
- }
- return 1;
- }
- else if(dialogid==DIALOG_ID17&&response)
- {
- login(playerid);
- SendClientMessage(playerid,CHAT_COLOR,"Mapeditor aktiviert");
- mapmenu(playerid);
- return 1;
- }
- else if(dialogid==DIALOG_ID2)
- {
- if(!response)return mainmenu(playerid);
- new val=strval(inputtext);
- if(val<5||val>400)return SendClientMessage(playerid,CHAT_COLOR,"Fehler: Muss zwischen 5 und 400 sein");
- DRAW_DISTANCE=val;
- new str[128];
- format(str,sizeof str,"New Drawdistance: %d",DRAW_DISTANCE);
- return SendClientMessage(playerid,CHAT_COLOR,str);
- }
- else if(dialogid==DIALOG_ID4)
- {
- if(!response)return mainmenu(playerid);
- new val=strval(inputtext);
- if(val<1||val>400-exobjects)
- {
- new xt1[128];
- format(xt1,sizeof xt1,"Fehler: Muss zwischen 1 und %d sein",1000-exobjects);
- return SendClientMessage(playerid,CHAT_COLOR,xt1);
- }
- MAXPLAYEROBJ=val;
- new str[128];
- format(str,sizeof str,"Neues Playerobject-Limit: %d",MAXPLAYEROBJ);
- return SendClientMessage(playerid,CHAT_COLOR,str);
- }
- else if(dialogid==DIALOG_ID5)
- {
- if(!response)return mainmenu(playerid);
- new val=strval(inputtext);
- if(val<200||val>3500)return SendClientMessage(playerid,CHAT_COLOR,"Fehler: Muss zwischen 200 und 3500 sein");
- timeT=val;
- KillTimer(kill);
- kill=SetTimer("test",timeT,1);
- new str[128];
- format(str,sizeof str,"Neue Timerzeit: %d",timeT);
- return SendClientMessage(playerid,CHAT_COLOR,str);
- }
- else if(dialogid==DIALOG_ID6&&response)
- {
- switch(listitem)
- {
- case 0:
- {
- ShowPlayerDialog(playerid,DIALOG_ID7,DIALOG_STYLE_INPUT,"Opas Objectstreamer - Virtualworld ändern","Gib die neue Virtualworld ein","OK","Abbrechen");
- }
- case 1:
- {
- ShowPlayerDialog(playerid,DIALOG_ID15,DIALOG_STYLE_INPUT,"Opas Objectstreamer - Interior ändern","Gib das neue Interior ein","OK","Abbrechen");
- }
- case 2:
- {
- remoteDestroy(edit);
- SendClientMessage(playerid,CHAT_COLOR,"Object gelöscht");
- edit=-1;
- }
- }
- return 1;
- }
- else if(dialogid==DIALOG_ID7)
- {
- if(!response)return showobject2(playerid,edit);
- new val=strval(inputtext);
- if(val<-1)return SendClientMessage(playerid,CHAT_COLOR,"Fehler: Muss zwischen -1 und ... sein");
- #if VIRTUALWORLD==1
- remoteVirtual(edit,val);
- #endif
- return showobject2(playerid,edit);
- }
- else if(dialogid==DIALOG_ID15)
- {
- if(!response)return showobject2(playerid,edit);
- new val=strval(inputtext);
- if(val<-1)return SendClientMessage(playerid,CHAT_COLOR,"Fehler: Muss zwischen -1 und ... sein");
- #if INTERIOR==1
- remoteVirtual(edit,val);
- #endif
- return showobject2(playerid,edit);
- }
- else if(dialogid==DIALOG_ID9)
- {
- if(!response)return mapmenu(playerid);
- new val=strval(inputtext);
- if(val<1)return ShowPlayerDialog(playerid,DIALOG_ID9,DIALOG_STYLE_INPUT,"Opas Objectstreamer - Objekt hinzufügen","Gib die modelid ein\n[[Ungültige Eingabe!]]","OK","Abbrechen");
- new Float:lol[4];
- GetPlayerPos(playerid,lol[0],lol[1],lol[2]);
- GetPlayerFacingAngle(playerid,lol[3]);
- new fish1=remoteObject(val,lol[0],lol[1],lol[2],0.0,0.0,lol[3]);
- if(!fish1)SendClientMessage(playerid,CHAT_COLOR,"Fail beim Objekterstellen");
- else
- {
- new rr[128];
- format(rr,sizeof rr,"Object %d erstellt",obj-1);
- SendClientMessage(playerid,CHAT_COLOR,rr);
- }
- return 1;
- }
- else if(dialogid==DIALOG_ID10)
- {
- if(!response)return mapmenu(playerid);
- new filen[65];
- format(filen,sizeof filen,"%s.txt",inputtext);
- if(fexist(filen))return SendClientMessage(playerid,CHAT_COLOR,"Fehler: Diese Datei existiert schon");
- new zeile[300];
- new File:bob=fopen(filen,io_write);
- if(!bob)
- {
- new gold1[128];
- format(gold1,sizeof gold1,"Mapspeichern [%s]: fail",filen);
- log(gold1);
- return SendClientMessage(playerid,CHAT_COLOR,gold1);
- }
- new lolh[120],wname[MAX_PLAYER_NAME],date[3];
- GetPlayerName(playerid,wname,sizeof wname);
- getdate(date[0],date[1],date[2]);
- format(lolh,sizeof lolh,"//Erstellt mit Opas Objectstreamer\r\n//%d.%d.%d von %s",date[2],date[1],date[0],wname);
- fwrite(bob,lolh);
- for(new i;i<obj;i++)if(!invalid[i])
- {
- #if VIRTUALWORLD==1
- format(zeile,sizeof zeile,"\r\nCreateObject(%d,%f,%f,%f,%f,%f,%f,%d);//%d",o[i][mod],o[i][x],o[i][y],o[i][z],o[i][rx],o[i][ry],o[i][rz],o[i][vw],i);
- #else
- format(zeile,sizeof zeile,"\r\nCreateObject(%d,%f,%f,%f,%f,%f,%f);//%d",o[i][mod],o[i][x],o[i][y],o[i][z],o[i][rx],o[i][ry],o[i][rz],i);
- #endif
- fwrite(bob,zeile);
- }
- fclose(bob);
- new gold[128];
- format(gold,sizeof gold,"Map gespeichert [%s]",filen);
- log(gold);
- return SendClientMessage(playerid,CHAT_COLOR,gold);
- }
- else if(dialogid==DIALOG_ID11)
- {
- if(!response)return mapmenu(playerid);
- if(admin!=playerid)return SendClientMessage(playerid,CHAT_COLOR,"Du hast den Mapeditor nicht aktiviert!");
- new fxx[50],bool:self;
- switch(listitem)
- {
- case 0:fxx="Weapons.txt";
- case 1:fxx="Nature.txt";
- case 2:fxx="Fun Stuff.txt";
- case 3:fxx="Barriers.txt";
- case 4:fxx="Various.txt";
- case 5:fxx="Various II.txt";
- case 6:fxx="Various III.txt";
- case 7:fxx="Misc.txt";
- case 8:fxx="Misc II.txt";
- case 9:fxx="Casino Items.txt";
- case 10:fxx="Bar Items.txt";
- case 11:fxx="Tables and Chairs.txt";
- case 12:fxx="SAMP.txt";
- case 13:fxx="SAMP2.txt";
- case 14:fxx="Stunt.txt";
- case 15:fxx="Roads.txt";
- case 16:fxx="Particles.txt";
- case 17:fxx="Clothes.txt";
- case 18:fxx="Clothes2.txt";
- case 19:fxx="Clothes3.txt";
- case 20:fxx="Clothes4.txt";
- case 21:fxx="Various IV.txt";
- case 22:fxx="XMas.txt";
- case 23:fxx="0.3d.txt";
- case 24:self=true;
- }
- if(self)return ShowPlayerDialog(playerid,DIALOG_ID13,DIALOG_STYLE_INPUT,"Opas Objectstreamer","Gib den Dateinamen ein","OK","Abrrechen");
- objfile(fxx);
- return 1;
- }
- else if(dialogid==DIALOG_ID13)
- {
- if(!response)return mainmenu(playerid);
- if(!objfile(inputtext))return ShowPlayerDialog(playerid,DIALOG_ID13,DIALOG_STYLE_INPUT,"Opas Objectstreamer","Gib den Dateinamen ein\n[[Error: Die Datei existiert nicht!]]","OK","Abrrechen");
- return 1;
- }
- else if(dialogid==DIALOG_ID12)
- {
- if(!response)
- {
- if(!nichtnochmal)objfile(lastfile);
- else
- {
- nichtnochmal=false;
- anfang=0;
- }
- return 1;
- }
- nichtnochmal=false;
- anfang=0;
- new Float:lol[4];
- GetPlayerPos(playerid,lol[0],lol[1],lol[2]);
- GetPlayerFacingAngle(playerid,lol[3]);
- new fish1=remoteObject(olist[listitem],lol[0],lol[1],lol[2],0.0,0.0,lol[3]);
- if(!fish1)SendClientMessage(playerid,CHAT_COLOR,"Fail bei der Objecterstellung");
- else
- {
- new rr[128];
- format(rr,sizeof rr,"Object %d erstellt",obj-1);
- SendClientMessage(playerid,CHAT_COLOR,rr);
- }
- return 1;
- }
- else if(dialogid==DIALOG_ID23)
- {
- if(!response)return mapmenu(playerid);
- return searchobject(playerid,inputtext);
- }
- else if(dialogid==DIALOG_ID24)
- {
- if(!response)return searchmenu(playerid);
- new Float:lol[4];
- GetPlayerPos(playerid,lol[0],lol[1],lol[2]);
- GetPlayerFacingAngle(playerid,lol[3]);
- new fish1=remoteObject(slist[listitem],lol[0],lol[1],lol[2],0.0,0.0,lol[3]);
- if(!fish1)SendClientMessage(playerid,CHAT_COLOR,"Fail bei der Objecterstellung");
- else
- {
- new rr[128];
- format(rr,sizeof rr,"Object %d erstellt",obj-1);
- SendClientMessage(playerid,CHAT_COLOR,rr);
- }
- return 1;
- }
- else if(dialogid==DIALOG_ID14)return mainmenu(playerid);
- return 1;
- }
- return 0;
- }
- searchmenu(playerid)return ShowPlayerDialog(playerid,DIALOG_ID23,DIALOG_STYLE_INPUT,"Opas Objectstreamer","Gib einen Suchbegriff ein:","OK","Abbrechen");
- searchobject(playerid,str[])
- {
- if(strlen(str))
- {
- #define MAX_FILEZ 24
- new fileZ[MAX_FILEZ][30]={
- "Weapons.txt",
- "Nature.txt",
- "Fun Stuff.txt",
- "Barriers.txt",
- "Various.txt",
- "Various II.txt",
- "Various III.txt",
- "Misc.txt",
- "Misc II.txt",
- "Casino Items.txt",
- "Bar Items.txt",
- "Tables and Chairs.txt",
- "SAMP.txt",
- "SAMP2.txt",
- "Stunt.txt",
- "Roads.txt",
- "Particles.txt",
- "Clothes.txt",
- "Clothes2.txt",
- "Clothes3.txt",
- "Clothes4.txt",
- "Various IV.txt",
- "XMas.txt",
- "0.3d.txt"
- };
- new filename[50],entry,dtxt[2*strlim];
- for(new fidx;fidx<MAX_FILEZ;fidx++)
- {
- format(filename,sizeof filename,"opa_objects/modelid/%s",fileZ[fidx]);
- if(!fexist(filename))continue;
- new File:xd=fopen(filename,io_read),zeile[100],zeila[2][100];
- for(;;)
- {
- fread(xd,zeile);
- if(!strlen(zeile)||entry==MAX_ENTRY)
- {
- break;
- }
- explode(zeile,zeila,'|');
- if(strfind(zeila[1],str,true)==-1)continue;
- slist[entry]=strval(zeila[0]);
- entry++;
- if(entry)format(dtxt,sizeof dtxt,"%s\n%s",dtxt,zeila[1]);
- else format(dtxt,sizeof dtxt,"%s",zeila[1]);
- }
- fclose(xd);
- }
- if(!entry)return ShowPlayerDialog(playerid,DIALOG_ID23,DIALOG_STYLE_INPUT,"Opas Objectstreamer","Gib einen Suchbegriff ein:\n[[Fehler: Keine Ergebnisse gefunden]]","OK","Abbrechen");
- ShowPlayerDialog(playerid,DIALOG_ID24,DIALOG_STYLE_LIST,"Opas Objectstreamer - Objecte durchsuchen",dtxt,"Erstellen","Suchbegriff...");
- }
- else
- {
- ShowPlayerDialog(playerid,DIALOG_ID23,DIALOG_STYLE_INPUT,"Opas Objectstreamer","Gib einen Suchbegriff ein:\n[[Fehler: Ungültiger Suchbegriff]]","OK","Abbrechen");
- }
- return true;
- }
- login(playerid)
- {
- admin=playerid;
- for(new i;i<obj;i++)if(!invalid[i])
- {
- new sr[250],vwstr[100];
- format(vwstr,sizeof vwstr,"Model:%d",o[i][mod]);
- #if VIRTUALWORLD==1
- format(vwstr,sizeof vwstr,"%s World:%d",vwstr,o[i][vw]);
- #endif
- #if INTERIOR==1
- format(vwstr,sizeof vwstr,"%s Interior:%d",vwstr,o[i][inter]);
- #endif
- format(sr,sizeof sr,"Object %d\n%s\n[%.2f|%.2f|%.2f]",i,vwstr,o[i][x],o[i][y],o[i][z]);
- noob[i]=CreatePlayer3DTextLabel(playerid,sr,LABEL_COLOR,o[i][x],o[i][y],o[i][z],LABEL_RANGE,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0);
- noob4[i]=true;
- #if PANEL==1
- panelU(playerid);
- #endif
- }
- return 1;
- }
- logout()
- {
- if(edit!=-1)fuckEdit();
- for(new i;i<obj;i++)if(!invalid[i])
- {
- DeletePlayer3DTextLabel(admin,noob[i]);
- noob4[i]=false;
- }
- #if PANEL==1
- new old=admin;
- #endif
- admin=-1;
- #if PANEL==1
- panelU(old);
- #endif
- return 1;
- }
- public test()
- {
- for(new i;i<=dynamicPlayerBuffer;i++)
- {
- if(!IsPlayerConnected(i)||IsPlayerNPC(i))continue;
- for(new n;n<obj;n++)if(!invalid[n])
- {
- #if CLIENTSTREAM==0
- if(IsPlayerInRangeOfPoint(i,DRAW_DISTANCE,o[n][x],o[n][y],o[n][z]))
- #else
- if(IsPlayerInRangeOfPoint(i,DRAW_DISTANCE+20.0,o[n][x],o[n][y],o[n][z]))
- #endif
- {
- #if VIRTUALWORLD==1
- if(o[n][vw]!=-1&&(GetPlayerVirtualWorld(i)!=o[n][vw]))goto sv3nsch4ch7;
- #endif
- #if INTERIOR==1
- if(o[n][inter]!=-1&&(GetPlayerInterior(i)!=o[n][inter]))goto sv3nsch4ch7;
- #endif
- if(!p[i][n])
- {
- if(GetPVarInt(i,"ooCrash")<MAXPLAYEROBJ)
- {
- #if CLIENTSTREAM==0
- p[i][n]=CreatePlayerObject(i,o[n][mod],o[n][x],o[n][y],o[n][z],o[n][rx],o[n][ry],o[n][rz]);
- #else
- p[i][n]=CreatePlayerObject(i,o[n][mod],o[n][x],o[n][y],o[n][z],o[n][rx],o[n][ry],o[n][rz],DRAW_DISTANCE);
- #endif
- SetPVarInt(i,"ooCrash",GetPVarInt(i,"ooCrash")+1);
- #if CALLBACK==1
- CallRemoteFunction("OnObjectStreamIn","dd",i,n);
- #endif
- }
- else if(!warn[i])
- {
- sendAdminWarn(i);
- warn[i]=true;
- }
- }
- continue;
- }
- #if (VIRTUALWORLD==1)||(INTERIOR==1)
- sv3nsch4ch7:
- #endif
- if(p[i][n]!=0)
- {
- DestroyPlayerObject(i,p[i][n]);
- p[i][n]=0;
- SetPVarInt(i,"ooCrash",GetPVarInt(i,"ooCrash")-1);
- #if CALLBACK==1
- CallRemoteFunction("OnObjectStreamOut","dd",i,n);
- #endif
- }
- }
- if(wait[i])
- {
- wait[i]=false;
- TogglePlayerControllable(i,1);
- #if TEXTDRAW==2
- TextDrawHideForPlayer(i,Textdraw0);
- TextDrawShowForPlayer(i,Textdraw1);
- SetTimerEx("hideText",500,0,"d",i);
- #else
- #if TEXTDRAW==1
- GameTextForPlayer(i,"~w~LADE MAP...~n~~g~FERTIG",500,6);
- #endif
- #endif
- }
- }
- }
- #if TEXTDRAW==2
- public hideText(playerid)TextDrawHideForPlayer(playerid,Textdraw1);
- #endif
- public remoteObjectEx()
- {
- exobjects++;
- MAXPLAYEROBJ--;
- }
- public remoteDestroyEx()
- {
- exobjects--;
- if(MAXPLAYEROBJ<1000)MAXPLAYEROBJ++;
- }
- sendAdminWarn(i)
- {
- new strr[128],namee[MAX_PLAYER_NAME],Float:b[3];
- GetPlayerName(i,namee,sizeof namee);
- GetPlayerPos(i,b[0],b[1],b[2]);
- format(strr,sizeof strr,"opa_objectstreamer: einige Objekte können nicht angezeigt werden (Spieler %s[%d]; %02f,%02f,%02f)",namee,i,b[0],b[1],b[2]);
- for(new e;e<MAX_SLOTS;e++)if(IsPlayerAdmin(e))
- {
- SendClientMessage(e,CHAT_COLOR,strr);
- SendClientMessage(e,CHAT_COLOR,"Tipp: /streamer -> Drawdistance runterstellen");
- }
- format(strr,sizeof strr,"PlayerWarnung: %s[%d]|%02f|%02f|%02f\n",namee,i,b[0],b[1],b[2]);
- log(strr);
- }
- keep(objx)
- {
- if(admin==-1)return 1;
- new sr[250],vwstr[100];
- format(vwstr,sizeof vwstr,"Model:%d",o[objx][mod]);
- #if VIRTUALWORLD==1
- format(vwstr,sizeof vwstr,"%s World:%d",vwstr,o[objx][vw]);
- #endif
- #if INTERIOR==1
- format(vwstr,sizeof vwstr,"%s Interior:%d",vwstr,o[objx][inter]);
- #endif
- format(sr,sizeof sr,"Object %d\n%s\n[%.2f|%.2f|%.2f]",objx,vwstr,o[objx][x],o[objx][y],o[objx][z]);
- if(noob4[objx])DeletePlayer3DTextLabel(admin,noob[objx]);
- if(objx!=edit)noob[objx]=CreatePlayer3DTextLabel(admin,sr,LABEL_COLOR,o[objx][x],o[objx][y],o[objx][z],LABEL_RANGE,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0);
- else noob[objx]=CreatePlayer3DTextLabel(admin,sr,LABEL_COLOR2,o[objx][x],o[objx][y],o[objx][z],LABEL_RANGE,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0);
- noob4[objx]=true;
- return 1;
- }
- public remoteObject(xx1,Float:xx2,Float:xx3,Float:xx4,Float:xx5,Float:xx6,Float:xx7)
- {
- new bobj=-1;
- for(new i;i<MAX_STREAMOBJ;i++)
- {
- if(invalid[i]||i==obj)
- {
- bobj=i;
- break;
- }
- }
- if(bobj==-1)return 0;
- o[bobj][mod]=xx1;
- o[bobj][x]=xx2;
- o[bobj][y]=xx3;
- o[bobj][z]=xx4;
- o[bobj][rx]=xx5;
- o[bobj][ry]=xx6;
- o[bobj][rz]=xx7;
- o[bobj][resID]=1;
- invalid[bobj]=false;
- #if INTERIOR==1
- o[bobj][inter]=-1;
- #endif
- keep(bobj);
- if(bobj==obj)obj++;
- CallRemoteFunction("remoteNumber","d",bobj);
- return 1;
- }
- #if VIRTUALWORLD==1
- public remoteVirtual(xx1,xx2)
- {
- o[xx1][vw]=xx2;
- keep(xx1);
- return 1;
- }
- #endif
- #if INTERIOR==1
- public remoteInt(xx1,xx2)
- {
- o[xx1][inter]=xx2;
- keep(xx1);
- return 1;
- }
- #endif
- public remoteMove(xx1,Float:xx2,Float:xx3,Float:xx4,Float:xx5,Float:xx6,Float:xx7,Float:xx8)
- {
- for(new i;i<MAX_SLOTS;i++)
- {
- if(p[i][xx1]!=0)
- {
- MovePlayerObject(i,p[i][xx1],xx2,xx3,xx4,xx5,xx6,xx7,xx8);
- }
- }
- o[xx1][x]=xx2;
- o[xx1][y]=xx3;
- o[xx1][z]=xx4;
- o[xx1][rx]=xx6;
- o[xx1][ry]=xx7;
- o[xx1][rz]=xx8;
- keep(xx1);
- return 1;
- }
- public remoteSetPos(xx1,Float:xx2,Float:xx3,Float:xx4)
- {
- for(new i;i<MAX_SLOTS;i++)
- {
- if(p[i][xx1]!=0)
- {
- SetPlayerObjectPos(i,p[i][xx1],xx2,xx3,xx4);
- }
- }
- o[xx1][x]=xx2;
- o[xx1][y]=xx3;
- o[xx1][z]=xx4;
- keep(xx1);
- return 1;
- }
- public remoteSetRot(xx1,Float:xx2,Float:xx3,Float:xx4)
- {
- for(new i;i<MAX_SLOTS;i++)
- {
- if(p[i][xx1]!=0)
- {
- SetPlayerObjectRot(i,p[i][xx1],xx2,xx3,xx4);
- }
- }
- o[xx1][rx]=xx2;
- o[xx1][ry]=xx3;
- o[xx1][rz]=xx4;
- keep(xx1);
- return 1;
- }
- public OnRconCommand(cmd[])
- {
- if(strlen(cmd))
- {
- #define kaq cmd
- new key[40],str[300];
- for(new kaqa;;kaqa++)
- {
- if(kaq[kaqa]==' ')
- {
- format(str,sizeof str,kaq[kaqa+1]);
- if(!strcmp(key,"loadmap",true))
- {
- format(str,sizeof str,"%s.map",str);
- loadMap(str);
- }
- if(!strcmp(key,"unloadmap",true))
- {
- format(str,sizeof str,"%s.map",str);
- for(new i;i<maxRes;i++)
- {
- if(!strcmp(resName[i],str,true))fuckResource(i);
- }
- }
- if(!strcmp(key,"reloadmap",true))
- {
- new name[128];
- format(name,sizeof name,"unloadmap %s",str);
- SendRconCommand(name);
- format(name,sizeof name,"loadmap %s",str);
- SendRconCommand(name);
- }
- break;
- }
- else key[kaqa]=kaq[kaqa];
- }
- #undef kaq
- }
- return 1;
- }
- fuckResource(resx)
- {
- format(resName[resx],50,"\0");
- for(new n;n<obj;n++)if(o[n][mod]!=0&&o[n][resID]==resx)remoteDestroy(n);
- }
- public remoteDestroy(xx1)
- {
- for(new i;i<MAX_SLOTS;i++)
- {
- if(p[i][xx1]!=0)
- {
- DestroyPlayerObject(i,p[i][xx1]);
- p[i][xx1]=0;
- SetPVarInt(i,"ooCrash",GetPVarInt(i,"ooCrash")-1);
- }
- }
- o[xx1][mod]=0;
- o[xx1][x]=0;
- o[xx1][y]=0;
- o[xx1][z]=0;
- o[xx1][rx]=0;
- o[xx1][ry]=0;
- o[xx1][rz]=0;
- #if VIRTUALWORLD==1
- o[xx1][vw]=-1;
- #endif
- #if INTERIOR==1
- o[xx1][inter]=-1;
- #endif
- invalid[xx1]=true;
- if(admin!=-1)
- {
- DeletePlayer3DTextLabel(admin,noob[xx1]);
- noob4[xx1]=false;
- }
- return 1;
- }
- public remoteStop(xx1)
- {
- for(new i;i<MAX_SLOTS;i++)
- {
- if(p[i][xx1]!=0)
- {
- StopPlayerObject(i,p[i][xx1]);
- }
- }
- }
- public remoteConnectGM()log("Gamemode Connected!");
- public remoteConnectFS()log("Filterscript Connected!");
- public remoteMakeWait(playerid)
- {
- if(wait[playerid])return 0;
- TogglePlayerControllable(playerid,0);
- wait[playerid]=true;
- #if TEXTDRAW==2
- TextDrawShowForPlayer(playerid,Textdraw0);
- #else
- #if TEXTDRAW==1
- GameTextForPlayer(playerid,"~w~LADE MAP...~n~~r~BITTE WARTEN",timeT,6);
- #endif
- #endif
- return 1;
- }
- #define remote:%1(%2) forward r_%1(%2);\
- public r_%1(%2)
- remote:getObjectPos(n)
- {
- if(n<0||n>=MAX_STREAMOBJ||invalid[n])return false;
- CallRemoteFunction("opa_floatReturn","df",0,o[n][x]);
- CallRemoteFunction("opa_floatReturn","df",1,o[n][y]);
- CallRemoteFunction("opa_floatReturn","df",2,o[n][z]);
- return true;
- }
- remote:getObjectRot(n)
- {
- if(n<0||n>=MAX_STREAMOBJ||invalid[n])return false;
- CallRemoteFunction("opa_floatReturn","df",0,o[n][rx]);
- CallRemoteFunction("opa_floatReturn","df",1,o[n][ry]);
- CallRemoteFunction("opa_floatReturn","df",2,o[n][rz]);
- return true;
- }
- remote:getObjectVirtualWorld(n)
- {
- if(n<0||n>=MAX_STREAMOBJ||invalid[n])return false;
- CallRemoteFunction("opa_intReturn","dd",0,o[n][vw]);
- return true;
- }
- remote:getObjectInterior(n)
- {
- if(n<0||n>=MAX_STREAMOBJ||invalid[n])return false;
- CallRemoteFunction("opa_intReturn","dd",0,o[n][inter]);
- return true;
- }
- remote:isValidObject(n)
- {
- if(n<0||n>=MAX_STREAMOBJ||invalid[n])return false;
- return true;
- }
- log(string[])
- {
- #if LOG_ACTIVE==1
- new kkk[134],xtime[3];
- gettime(xtime[0],xtime[1],xtime[2]);
- format(kkk,sizeof kkk,"[%02d:%02d:%02d]%s\r\n",xtime[0],xtime[1],xtime[2],string);
- new File:fff=fopen(LOG_FILE,io_append);
- fwrite(fff,kkk);
- fclose(fff);
- #endif
- return printf("[opa_objects] %s",string);
- }
- findZ(playerid)
- {
- new Float:finder[3];
- GetPlayerPos(playerid,finder[0],finder[1],finder[2]);
- SetPlayerPosFindZ(playerid,finder[0],finder[1],finder[2]);
- }
- public OnPlayerDisconnect(playerid,reason)
- {
- if(playerid==admin)logout();
- for(new n;n<obj;n++)
- {
- if(p[playerid][n]!=0)
- {
- DestroyPlayerObject(playerid,p[playerid][n]);
- p[playerid][n]=0;
- }
- }
- SetPVarInt(playerid,"ooCrash",0);
- warn[playerid]=false;
- wait[playerid]=false;
- if(!IsPlayerNPC(playerid))pcount--;
- if(playerid==dynamicPlayerBuffer)
- {
- dynamicPlayerBuffer=0;
- for(new i;i<MAX_SLOTS;i++)if(IsPlayerConnected(i)&&i!=playerid)dynamicPlayerBuffer=i;
- }
- }
- loadMap(path[])
- {
- new name[128];
- format(name,sizeof name,"Lade Map %s...",path);
- log(name);
- new pathxx[120];
- format(pathxx,sizeof pathxx,"opa_objects/%s",path);
- new File:file=fopen(pathxx,io_read),line[300];
- if(!file)return !log("FEHLER: Map existiert nicht im \"scriptfiles/opa_objects\"-Ordner");
- resource++;
- format(resName[resource],50,"%s",path);
- while(fread(file,line,300)>0)
- {
- new bobj=-1;
- for(new i;i<MAX_STREAMOBJ;i++)
- {
- if(invalid[i]||i==obj)
- {
- bobj=i;
- break;
- }
- }
- if(bobj==-1)return !log("FEHLER: Objektlimit erreicht");
- new strlenn=strlen(line);
- new bool:fucking,bool:eklig;
- for(new i;i<strlenn;i++)
- {
- if(line[i]=='=')
- {
- if(!eklig)
- {
- if(strlen(line)>=(i-strlen("object id")))
- {
- if(!strcmp(line[i-strlen("object id")],"object id",_,strlen("object id")))
- {
- eklig=true;
- }
- }
- else if(strlen(line)>=(i-strlen("object name")))
- {
- if(!strcmp(line[i-strlen("object name")],"object name",_,strlen("object name")))
- {
- eklig=true;
- }
- }
- }
- else
- {
- new key;
- if(!strcmp(line[i-strlen("model")],"model",_,strlen("model")))key=1;
- else if(!strcmp(line[i-strlen("posX")],"posX",_,strlen("posX")))key=2;
- else if(!strcmp(line[i-strlen("posY")],"posY",_,strlen("posY")))key=3;
- else if(!strcmp(line[i-strlen("posZ")],"posZ",_,strlen("posZ")))key=4;
- else if(!strcmp(line[i-strlen("rotX")],"rotX",_,strlen("rotX")))key=5;
- else if(!strcmp(line[i-strlen("rotY")],"rotY",_,strlen("rotY")))key=6;
- else if(!strcmp(line[i-strlen("rotZ")],"rotZ",_,strlen("rotZ")))key=7;
- else if(!strcmp(line[i-strlen("interior")],"interior",_,strlen("interior")))key=8;
- else if(!strcmp(line[i-strlen("dimension")],"dimension",_,strlen("dimension")))key=9;
- else key=0;
- i+=2;
- new tester[100],b;
- while(line[i]!='"')
- {
- tester[b]=line[i];
- b++;
- i++;
- }
- switch(key)
- {
- case 1:o[bobj][mod]=strval(tester);
- case 2:o[bobj][x]=floatstr(tester);
- case 3:o[bobj][y]=floatstr(tester);
- case 4:o[bobj][z]=floatstr(tester);
- case 5:o[bobj][rx]=floatstr(tester);
- case 6:o[bobj][ry]=floatstr(tester);
- case 7:o[bobj][rz]=floatstr(tester);
- case 8:o[bobj][inter]=strval(tester);
- case 9:o[bobj][vw]=strval(tester);
- }
- }
- }
- else if(line[i]=='/')fucking=true;
- else if(line[i]=='>'&&fucking)
- {
- fucking=false;
- eklig=false;
- invalid[bobj]=false;
- o[bobj][resID]=resource;
- keep(bobj);
- if(bobj==obj)obj++;
- }
- else fucking=false;
- }
- }
- format(name,sizeof name,"Map %s erfolgreich geladen",path);
- log(name);
- return fclose(file);
- }
- //----------DINI BY DRACOBLUE------------//
- dini_Set(filename[],key[],value[]) {
- new key_length = strlen(key);
- new value_length = strlen(value);
- if (key_length==0 || key_length+value_length+2>DINI_MAX_STRING) return false;
- new File:fohnd, File:fwhnd;
- new tmpres[DINI_MAX_STRING];
- new bool:wasset=false;
- format(tmpres,sizeof(tmpres),"%s.part",filename);
- fremove(tmpres);
- fohnd=fopen(filename,io_read);
- if (!fohnd) return false;
- fwhnd=fopen(tmpres,io_write);
- if (!fwhnd) {
- fclose(fohnd);
- return false;
- }
- while (fread(fohnd,tmpres)) {
- if (
- !wasset
- && tmpres[key_length]==' '
- && !strcmp(tmpres, key, true, key_length)
- ) {
- format(tmpres,sizeof(tmpres),"%s %s",key,value);
- wasset=true;
- } else {
- DINI_StripNewLine(tmpres);
- }
- fwrite(fwhnd,tmpres);
- fwrite(fwhnd,"\r\n");
- }
- if (!wasset) {
- format(tmpres,sizeof(tmpres),"%s %s",key,value);
- fwrite(fwhnd,tmpres);
- fwrite(fwhnd,"\r\n");
- }
- fclose(fohnd);
- fclose(fwhnd);
- format(tmpres,sizeof(tmpres),"%s.part",filename);
- if (DINI_fcopytextfile(tmpres,filename)) {
- return fremove(tmpres);
- }
- return false;
- }
- dini_Get(filename[],key[]) {
- new tmpres[DINI_MAX_STRING];
- new key_length = strlen(key);
- if (key_length==0 || key_length+2>DINI_MAX_STRING) return tmpres;
- new File:fohnd;
- fohnd=fopen(filename,io_read);
- if (!fohnd) return tmpres;
- while (fread(fohnd,tmpres)) {
- if (
- tmpres[key_length]==' '
- && !strcmp(tmpres, key, true, key_length)
- ) {
- DINI_StripNewLine(tmpres);
- strmid(tmpres, tmpres, key_length + 1, strlen(tmpres), DINI_MAX_STRING);
- fclose(fohnd);
- return tmpres;
- }
- }
- fclose(fohnd);
- return tmpres;
- }
- DINI_fcopytextfile(oldname[],newname[]) {
- new File:ohnd,File:nhnd;
- if (!fexist(oldname)) return false;
- ohnd=fopen(oldname,io_read);
- if (!ohnd) return false;
- nhnd=fopen(newname,io_write);
- if (!nhnd) {
- fclose(ohnd);
- return false;
- }
- new tmpres[DINI_MAX_STRING];
- while (fread(ohnd,tmpres)) {
- DINI_StripNewLine(tmpres);
- format(tmpres,sizeof(tmpres),"%s\r\n",tmpres);
- fwrite(nhnd,tmpres);
- }
- fclose(ohnd);
- fclose(nhnd);
- return true;
- }
- DINI_StripNewLine(string[]) {
- new len = strlen(string);
- if (string[0]==0) return ;
- if ((string[len - 1] == '\n') || (string[len - 1] == '\r')) {
- string[len - 1] = 0;
- if (string[0]==0) return ;
- if ((string[len - 2] == '\n') || (string[len - 2] == '\r')) string[len - 2] = 0;
- }
- }
- //----------SSCANF BY Y_LESS------------//
- 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':
- {
- setarg(paramPos, 0, _:floatstr(string[stringPos]));
- }
- 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_SLOTS; %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;
- }
Add Comment
Please, Sign In to add comment