08.07.2014, 08:21
Hy all! I Download an NPC mod by Kurence. This is nice and good, but how do I do it to npc's spawn in virtual world 1 ? Please help me!
Here is the Pawn code:
Here is the Pawn code:
Код:
#include <a_samp> #include <filemanager.inc> new recording[MAX_PLAYERS] = 5; new rids[51]=0; new pnpcid[MAX_PLAYERS]=-1; new caridnpcfuck[MAX_PLAYERS]; new strfuck[32]; new isnpcincar[51]=0; new namesplit[51][51]; new fuckerskin[51]; new n00b; new Text3D:bitch[MAX_PLAYERS]; forward lulz(); //UPDATE SKINS - it is timer because some gamemodes change skin on spawn lol public OnFilterScriptInit() { print("\n----------------------------------"); print("InGame NPC editor by Kurence loaded!"); print("----------------------------------\n"); for(new i=0;i<51;i++){ new filename[64],scriptname[32]; format(filename,sizeof(filename),"daddycar%d.cfg",i); format(scriptname,sizeof(scriptname),"scriptfiles/daddycar%d.cfg",i); if(!fexist(filename)) file_create(scriptname); format(filename,sizeof(filename),"daddyskin%d.cfg",i); format(scriptname,sizeof(scriptname),"scriptfiles/daddyskin%d.cfg",i); if(!fexist(filename)) file_create(scriptname); } for(new i=0;i<51;i++){ new filename[64],nickname[32],scriptname[32]; format(filename,sizeof(filename),"daddycar%d.cfg",i); new File:fuckingfile=fopen(filename, io_read); new value[32]; fread(fuckingfile,value); fclose(fuckingfile); caridnpcfuck[i]=strval(value); format(filename,sizeof(filename),"daddyskin%d.cfg",i); fuckingfile=fopen(filename, io_read); fread(fuckingfile,value); fclose(fuckingfile); fuckerskin[i]=strval(value); format(filename,sizeof(filename),"npcmodes/recordings/daddycar%d.rec",i); format(nickname,sizeof(nickname),"Kurence%d",i); format(scriptname,sizeof(scriptname),"daddycar%d",i); if(file_exists(filename)) ConnectNPC(nickname,scriptname); format(filename,sizeof(filename),"npcmodes/recordings/daddyfoot%d.rec",i); format(scriptname,sizeof(scriptname),"daddyfoot%d",i); if(file_exists(filename)) ConnectNPC(nickname,scriptname); } SetTimer("lulz",1000,1); return 1; } public OnFilterScriptExit() { print("\n------------------------------------"); print("InGame NPC editor by Kurence unloaded!"); print("------------------------------------\n"); for(new i;i<MAX_PLAYERS;i++){ GetPlayerName(i,strfuck,sizeof(strfuck)); new fuckername[32]; GetPlayerName(i,fuckername,sizeof(fuckername)); if(IsPlayerNPC(i) && !strcmp("Kurence",fuckername,false,7))Kick(i); } return 1; } public OnPlayerCommandText(playerid,cmdtext[]){ new cmd[128], idx; cmd = strtok(cmdtext, idx); if(!strcmp("/knicks",cmdtext)){ if(n00b==0){ for(new i;i<MAX_PLAYERS;i++){ GetPlayerName(i,strfuck,sizeof(strfuck)); if(IsPlayerNPC(i) && !strcmp("Kurence",strfuck,false,7)){ GetPlayerName(i,strfuck,sizeof(strfuck)); bitch[i] = Create3DTextLabel(strfuck,0x28BA9AFF,0,0,0,200,-1,0); Attach3DTextLabelToPlayer(bitch[i],i,0,0,0.3); } } SendClientMessage(playerid,0x00FF0000,"NPC nicknames enabled"); n00b=1; return 1; } else{ for(new i;i<MAX_PLAYERS;i++){ Delete3DTextLabel(bitch[i]); } SendClientMessage(playerid,0x00FF0000,"NPC nicknames disabled"); n00b=0; return 1; } } if(!strcmp("/knpchelp",cmdtext)){ SendClientMessage(playerid,0xFF000000,"In-Game NPC maker by Kurence"); SendClientMessage(playerid,0x00FF0000,"COMMANDS:"); SendClientMessage(playerid,0x00FF0000,"/knpc [ID 0-50] - start/stop recording npc (PLAYER_RECORDING_TYPE will depend on your current state (on foot/driver)"); SendClientMessage(playerid,0x00FF0000,"/knpclist - show list of currently connected NPC's"); SendClientMessage(playerid,0x00FF0000,"/kremove [ID 0-50] - remove NPC (or use '/kremove all' to remove all NPCs)"); SendClientMessage(playerid,0x00FF0000,"/knicks - show/hide nicknames of NPC's"); SendClientMessage(playerid,0x00FF0000,"/knpchelp - show list of commands"); return 1; } if(!strcmp("/knpclist",cmd)){ new tmp[128]; tmp = strtok(cmdtext, idx); SendClientMessage(playerid,0xFF000000,"[NPCID] [NICKNAME] [PLAYERID]"); for(new i;i<MAX_PLAYERS;i++){ if(IsPlayerConnected(i)){ GetPlayerName(i,strfuck,sizeof(strfuck)); if(!strcmp("Kurence",strfuck,false,7)){ split(strfuck,namesplit,'e'); new msg[64]; format(msg,sizeof(msg),"%d %s %d",strval(namesplit[2]),strfuck,i); SendClientMessage(playerid,0xFF000000,msg); } } } return 1; } if (!strcmp("/kremove",cmd)){ new tmp[128]; tmp = strtok(cmdtext, idx); if(!strcmp("all",tmp) && strlen(tmp)==3){ SendClientMessage(playerid,0xFF000000,"Removing all NPC's..."); for(new i;i<MAX_PLAYERS;i++){ GetPlayerName(i,strfuck,sizeof(strfuck)); if(!strcmp("Kurence",strfuck,false,7))Kick(i); new filename[64]; format(filename,sizeof(filename),"npcmodes/recordings/daddycar%d.rec",i); if(file_exists(filename)) file_delete(filename); format(filename,sizeof(filename),"npcmodes/recordings/daddyfoot%d.rec",i); if(file_exists(filename)) file_delete(filename); } return 1; } if(!strlen(tmp)) return SendClientMessage(playerid,0xFF000000,"Usage: /kremove [ID] - Valid IDs: 0-50 or /kremove all"); if(strval(tmp)>50 || strval(tmp)<0) return SendClientMessage(playerid,0xFF000000,"Usage: /kremove [ID] - Valid IDs: 0-50 or /kremove all"); new remmsg[64]; format(remmsg,sizeof(remmsg),"Removing NPC with ID %d",strval(tmp)); for(new i;i<MAX_PLAYERS;i++){ GetPlayerName(i,strfuck,sizeof(strfuck)); new fuckername[32]; format(fuckername,sizeof(fuckername),"Kurence%d",strval(tmp)); if (!strcmp(fuckername,strfuck)) Kick(i); } SendClientMessage(playerid,0x00FF0000,remmsg); new filename[64]; format(filename,sizeof(filename),"npcmodes/recordings/daddycar%d.rec",strval(tmp)); if(file_exists(filename)) file_delete(filename); format(filename,sizeof(filename),"npcmodes/recordings/daddyfoot%d.rec",strval(tmp)); if(file_exists(filename)) file_delete(filename); return 1; } if (!strcmp("/knpc",cmd)){ new tmp[128]; tmp = strtok(cmdtext, idx); if(pnpcid[playerid]!=-1){ if(recording[playerid] == 1){ StopRecordingPlayerData(playerid); recording[playerid] = 5; new filenamefuck[64],daddyslittlegirl[64]; format(filenamefuck,sizeof(filenamefuck),"npcmodes/recordings/daddyfoot%d.rec",pnpcid[playerid]); file_delete(filenamefuck); format(filenamefuck,sizeof(filenamefuck),"npcmodes/recordings/daddycar%d.rec",pnpcid[playerid]); file_delete(filenamefuck); format(filenamefuck,sizeof(filenamefuck),"scriptfiles/daddyfoot%d.rec",pnpcid[playerid]); format(daddyslittlegirl,sizeof(daddyslittlegirl),"npcmodes/recordings/daddyfoot%d.rec",pnpcid[playerid]); file_move(filenamefuck,daddyslittlegirl); new fuckernamelulz[32]; format(fuckernamelulz,sizeof(fuckernamelulz),"Kurence%d",pnpcid[playerid]); format(daddyslittlegirl,sizeof(daddyslittlegirl),"daddyfoot%d",pnpcid[playerid]); ConnectNPC(fuckernamelulz,daddyslittlegirl); rids[pnpcid[playerid]]=0; pnpcid[playerid]=-1; recording[playerid] = 5; } if(recording[playerid] == 2){ StopRecordingPlayerData(playerid); recording[playerid] = 5; new filenamefuck[64],daddyslittlegirl[64]; format(filenamefuck,sizeof(filenamefuck),"npcmodes/recordings/daddycar%d.rec",pnpcid[playerid]); file_delete(filenamefuck); format(filenamefuck,sizeof(filenamefuck),"npcmodes/recordings/daddyfoot%d.rec",pnpcid[playerid]); file_delete(filenamefuck); format(filenamefuck,sizeof(filenamefuck),"scriptfiles/daddycar%d.rec",pnpcid[playerid]); format(daddyslittlegirl,sizeof(daddyslittlegirl),"npcmodes/recordings/daddycar%d.rec",pnpcid[playerid]); file_move(filenamefuck,daddyslittlegirl); new fuckernamelulz[32]; format(fuckernamelulz,sizeof(fuckernamelulz),"Kurence%d",pnpcid[playerid]); format(daddyslittlegirl,sizeof(daddyslittlegirl),"daddycar%d",pnpcid[playerid]); ConnectNPC(fuckernamelulz,daddyslittlegirl); for(new i;i<MAX_PLAYERS;i++){ GetPlayerName(i,strfuck,sizeof(strfuck)); new namelulzomg[32]; format(namelulzomg,sizeof(namelulzomg),"Kurence%d",pnpcid[playerid]); if (!strcmp(namelulzomg,strfuck)) PutPlayerInVehicle(i,caridnpcfuck[pnpcid[playerid]],0); } rids[pnpcid[playerid]]=0; pnpcid[playerid]=-1; recording[playerid] = 5; } }else{ if(!strlen(tmp)) return SendClientMessage(playerid,0xFF000000,"Usage: /knpc [ID] - Valid IDs: 0-50"); if(strval(tmp)>50 || strval(tmp)<0) return SendClientMessage(playerid,0xFF000000,"Usage: /knpc [ID] - Valid IDs: 0-50"); if(rids[strval(tmp)]==1) return SendClientMessage(playerid,0xFF000000,"Someone is already creating NPC with this ID!"); if(GetPlayerState(playerid) == 1){ caridnpcfuck[strval(tmp)] = -5; new filename[32]; fuckerskin[strval(tmp)]=GetPlayerSkin(playerid); format(filename,sizeof(filename),"daddyfoot%i",strval(tmp)); StartRecordingPlayerData(playerid, PLAYER_RECORDING_TYPE_ONFOOT,filename); recording[playerid]=1; rids[strval(tmp)]=1; new msg[64]; new filename2[64]; format(filename2,sizeof(filename2),"daddyskin%i.cfg",strval(tmp)); new File:fuckingfile=fopen(filename2, io_write); new value[64]; format(value,sizeof(value),"%d",GetPlayerSkin(playerid)); fwrite(fuckingfile,value); fclose(fuckingfile); isnpcincar[strval(tmp)] = 0; format(msg,sizeof(msg),"Creating On-Foot NPC with ID %d... Use /knpc again when done",strval(tmp)); SendClientMessage(playerid,0x00FF0000,msg); pnpcid[playerid]=strval(tmp); for(new i;i<MAX_PLAYERS;i++){ GetPlayerName(i,strfuck,sizeof(strfuck)); new fuckername[32]; format(fuckername,sizeof(fuckername),"Kurence%d",strval(tmp)); if (!strcmp(fuckername,strfuck)) Kick(i); } } else if(GetPlayerState(playerid) == 2){ new filename[32]; isnpcincar[strval(tmp)] = 1; format(filename,sizeof(filename),"daddycar%d",strval(tmp)); StartRecordingPlayerData(playerid, PLAYER_RECORDING_TYPE_DRIVER, filename); recording[playerid]=2; rids[strval(tmp)]=1; new msg[64]; fuckerskin[strval(tmp)]=GetPlayerSkin(playerid); format(msg,sizeof(msg),"Creating In-Car NPC with ID %d... Use /knpc again when done",strval(tmp)); SendClientMessage(playerid,0x00FF0000,msg); caridnpcfuck[strval(tmp)] = GetPlayerVehicleID(playerid); new filename2[64]; format(filename2,sizeof(filename2),"daddycar%d.cfg",strval(tmp)); new File:fuckingfile=fopen(filename2, io_write); new value[64]; format(value,sizeof(value),"%d",GetPlayerVehicleID(playerid)); fwrite(fuckingfile,value); fclose(fuckingfile); format(filename2,sizeof(filename2),"daddyskin%d.cfg",strval(tmp)); fuckingfile=fopen(filename2, io_write); format(value,sizeof(value),"%d",GetPlayerSkin(playerid)); fwrite(fuckingfile,value); fclose(fuckingfile); pnpcid[playerid]=strval(tmp); for(new i;i<MAX_PLAYERS;i++){ GetPlayerName(i,strfuck,sizeof(strfuck)); new fuckername[32]; format(fuckername,sizeof(fuckername),"Kurence%d",strval(tmp)); if (!strcmp(fuckername,strfuck)) Kick(i); } } } return 1; } return 0; } public OnPlayerConnect(playerid){ pnpcid[playerid]=-1; if(IsPlayerNPC(playerid)) SpawnPlayer(playerid); GetPlayerName(playerid,strfuck,sizeof(strfuck)); if(!strcmp("Kurence",strfuck,false,7)){ split(strfuck,namesplit,'e'); if(n00b==1){ GetPlayerName(playerid,strfuck,sizeof(strfuck)); bitch[playerid] = Create3DTextLabel(strfuck,0x28BA9AFF,0,0,0,200,-1,0); Attach3DTextLabelToPlayer(bitch[playerid],playerid,0,0,0.3); } if(GetVehicleModel(caridnpcfuck[strval(namesplit[2])])!=0) PutPlayerInVehicle(playerid,caridnpcfuck[strval(namesplit[2])],0); } return 1; } public OnPlayerEnterVehicle(playerid,vehicleid){ if(recording[playerid] == 1){ StopRecordingPlayerData(playerid); recording[playerid] = 5; new filenamefuck[64],daddyslittlegirl[64]; format(filenamefuck,sizeof(filenamefuck),"npcmodes/recordings/daddyfoot%d.rec",pnpcid[playerid]); file_delete(filenamefuck); format(filenamefuck,sizeof(filenamefuck),"npcmodes/recordings/daddycar%d.rec",pnpcid[playerid]); file_delete(filenamefuck); format(filenamefuck,sizeof(filenamefuck),"scriptfiles/daddyfoot%d.rec",pnpcid[playerid]); format(daddyslittlegirl,sizeof(daddyslittlegirl),"npcmodes/recordings/daddyfoot%d.rec",pnpcid[playerid]); file_move(filenamefuck,daddyslittlegirl); new fuckernamelulz[32]; format(fuckernamelulz,sizeof(fuckernamelulz),"Kurence%d",pnpcid[playerid]); format(daddyslittlegirl,sizeof(daddyslittlegirl),"daddyfoot%d",pnpcid[playerid]); ConnectNPC(fuckernamelulz,daddyslittlegirl); rids[pnpcid[playerid]]=0; pnpcid[playerid]=-1; } return 1; } public OnPlayerDisconnect(playerid,reason){ GetPlayerName(playerid,strfuck,sizeof(strfuck)); if(!strcmp("Kurence",strfuck,false,7) && n00b==1 && IsPlayerNPC(playerid)){ Delete3DTextLabel(bitch[playerid]); } if(recording[playerid]!=5){ StopRecordingPlayerData(playerid); recording[playerid] = 5; if(pnpcid[playerid]!=-1)rids[pnpcid[playerid]]=0; pnpcid[playerid]=-1; } return 1; } public lulz(){ for(new i;i<MAX_PLAYERS;i++){ GetPlayerName(i,strfuck,sizeof(strfuck)); if(!strcmp("Kurence",strfuck,false,7)){ split(strfuck,namesplit,'e'); if(GetPlayerSkin(i) != fuckerskin[strval(namesplit[2])]){ SetPlayerSkin(i,fuckerskin[strval(namesplit[2])]); } } } } public OnPlayerStateChange(playerid,newstate,oldstate){ // The same as OnPlayerExitVehicle ( if(oldstate==PLAYER_STATE_DRIVER && newstate==PLAYER_STATE_ONFOOT){ if(recording[playerid] == 2){ StopRecordingPlayerData(playerid); recording[playerid] = 5; new filenamefuck[64],daddyslittlegirl[64]; format(filenamefuck,sizeof(filenamefuck),"npcmodes/recordings/daddycar%d.rec",pnpcid[playerid]); file_delete(filenamefuck); format(filenamefuck,sizeof(filenamefuck),"npcmodes/recordings/daddyfoot%d.rec",pnpcid[playerid]); file_delete(filenamefuck); format(filenamefuck,sizeof(filenamefuck),"scriptfiles/daddycar%d.rec",pnpcid[playerid]); format(daddyslittlegirl,sizeof(daddyslittlegirl),"npcmodes/recordings/daddycar%d.rec",pnpcid[playerid]); file_move(filenamefuck,daddyslittlegirl); new fuckernamelulz[32]; format(fuckernamelulz,sizeof(fuckernamelulz),"Kurence%d",pnpcid[playerid]); format(daddyslittlegirl,sizeof(daddyslittlegirl),"daddycar%d",pnpcid[playerid]); ConnectNPC(fuckernamelulz,daddyslittlegirl); for(new i;i<MAX_PLAYERS;i++){ GetPlayerName(i,strfuck,sizeof(strfuck)); new namelulzomg[32]; format(namelulzomg,sizeof(namelulzomg),"Kurence%d",pnpcid[playerid]); if (!strcmp(namelulzomg,strfuck)) PutPlayerInVehicle(i,caridnpcfuck[pnpcid[playerid]],0); } rids[pnpcid[playerid]]=0; pnpcid[playerid]=-1; } } return 1; } strtok(const string[], &index) { new length = strlen(string); while ((index < length) && (string[index] <= ' ')) { index++; } new offset = index; new result[20]; while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1))) { result[index - offset] = string[index]; index++; } result[index - offset] = EOS; return result; } stock split(const strsrc[], strdest[][], delimiter) { new i, li; new aNum; new len; while(i <= strlen(strsrc)) { if(strsrc[i] == delimiter || i == strlen(strsrc)) { len = strmid(strdest[aNum], strsrc, li, i, 128); strdest[aNum][len] = 0; li = i+1; aNum++; } i++; } return 1; }