14.06.2018, 04:32
Hello SA-MP forum
This is a furniture filterscripts.When I compiled it.It took me about 4 second to did that.And I got the very large amx size...about 5MB.It even bigger than my gamemodes size.This filterscripts just only had 648 line...
Here`s filterscripts
(It not made by me.I just changed it language to Chinese and did some edit)
Where was wrong?Can you help me?Please!
This is a furniture filterscripts.When I compiled it.It took me about 4 second to did that.And I got the very large amx size...about 5MB.It even bigger than my gamemodes size.This filterscripts just only had 648 line...
Here`s filterscripts
(It not made by me.I just changed it language to Chinese and did some edit)
Код:
main () { } //Inc #include <a_samp> #include <Dini2> #include <streamer> #include "../include/gl_common.inc" //define #define GPC(%0) CallRemoteFunction("GPC", "i", %0) #define GPCK(%0) CallRemoteFunction("GPCK", "i", %0) #define GHID(%0) CallRemoteFunction("GHID", "i", %0) #define MAX_FURNITURE 3500 #define SCM SendClientMessage #define Dialog_Edit 4500 #define Dialog_Edit2 4503 #define Dialog_Down 4501 #define Dialog_GetRangeFurniture 4502 // enum fInfo { fID, fObject, fModel, Float:fX, Float:fY, Float:fZ, Float:fRX, Float:fRY, Float:fRZ, fvID, fInt, Text3D:fText, bool:fLiftup, fName[256], fOwner[256] } new FurnitureInfo[MAX_FURNITURE][fInfo]; new PlayerUseingFurniture[MAX_PLAYERS]; new bool:PlayerLiftup[MAX_PLAYERS]; new bool:PlayerEdit[MAX_PLAYERS]; new bool:PlayerPutDown[MAX_PLAYERS]; new RecoveryLiftTimer; new ShowPlayerRangeFurniture[MAX_PLAYERS][MAX_FURNITURE]; //Forward forward SaveFurniture(idx); forward LoadFurniture(); forward CreateFurniture(ID); forward Lift(playerid); forward PutDown(playerid); forward RecoveryLift(); // public SaveFurniture(idx) { new string[256]; format(string,sizeof(string),"Furniture/%d.ini",idx); if(!fexist(string)) { dini_Create(string); } dini_IntSet(string,"Model",FurnitureInfo[idx][fModel]); dini_FloatSet(string,"X",FurnitureInfo[idx][fX]); dini_FloatSet(string,"Y",FurnitureInfo[idx][fY]); dini_FloatSet(string,"Z",FurnitureInfo[idx][fZ]); dini_FloatSet(string,"RX",FurnitureInfo[idx][fRX]); dini_FloatSet(string,"RY",FurnitureInfo[idx][fRY]); dini_FloatSet(string,"RZ",FurnitureInfo[idx][fRZ]); dini_IntSet(string,"vID",FurnitureInfo[idx][fvID]); dini_IntSet(string,"Int",FurnitureInfo[idx][fInt]); dini_Set(string,"Name",FurnitureInfo[idx][fName]); dini_Set(string,"Owner",FurnitureInfo[idx][fOwner]); return 1; } public LoadFurniture() { for(new idx=1;idx<MAX_FURNITURE;idx++) { new string[256]; format(string,sizeof(string),"Furniture/%d.ini",idx); if(fexist(string)) { FurnitureInfo[idx][fID] = idx; FurnitureInfo[idx][fModel] = dini_Int(string,"Model"); FurnitureInfo[idx][fX] = dini_Float(string,"X"); FurnitureInfo[idx][fY] = dini_Float(string,"Y"); FurnitureInfo[idx][fZ] = dini_Float(string,"Z"); FurnitureInfo[idx][fRX] = dini_Float(string,"RX"); FurnitureInfo[idx][fRY] = dini_Float(string,"RY"); FurnitureInfo[idx][fRZ] = dini_Float(string,"RZ"); FurnitureInfo[idx][fvID] = dini_Int(string,"vID"); FurnitureInfo[idx][fInt] = dini_Int(string,"Int"); FurnitureInfo[idx][fName] = dini_Get(string,"Name"); FurnitureInfo[idx][fOwner] = dini_Get(string,"Owner"); CreateFurniture(idx); } } return 1; } public CreateFurniture(ID) { FurnitureInfo[ID][fObject] = CreateDynamicObject(FurnitureInfo[ID][fModel], FurnitureInfo[ID][fX], FurnitureInfo[ID][fY], FurnitureInfo[ID][fZ], FurnitureInfo[ID][fRX], FurnitureInfo[ID][fRY], FurnitureInfo[ID][fRZ], FurnitureInfo[ID][fvID], FurnitureInfo[ID][fInt]); new string[128]; format(string, sizeof(string), "%d", FurnitureInfo[ID][fID]); FurnitureInfo[ID][fText] = CreateDynamic3DTextLabel(string, 0xFFFFFFFF, FurnitureInfo[ID][fX], FurnitureInfo[ID][fY], FurnitureInfo[ID][fZ], 3.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, FurnitureInfo[ID][fvID], FurnitureInfo[ID][fInt]); return 1; } public Lift(playerid) { FurnitureInfo[PlayerUseingFurniture[playerid]][fLiftup] = true; PlayerLiftup[playerid] = true; ClearAnimations(playerid); ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.0, 0, 0, 1, 1, 1); DestroyDynamic3DTextLabel(FurnitureInfo[PlayerUseingFurniture[playerid]][fText]); DestroyDynamicObject(FurnitureInfo[PlayerUseingFurniture[playerid]][fObject]); SetPlayerAttachedObject(playerid, 9, FurnitureInfo[PlayerUseingFurniture[playerid]][fModel], 1, 0, 0.6, 0, 0, 90, 0, 1, 1, 1); return 1; } public PutDown(playerid) { PlayerPutDown[playerid] = false; FurnitureInfo[PlayerUseingFurniture[playerid]][fLiftup] = false; GetPlayerPos(playerid, FurnitureInfo[PlayerUseingFurniture[playerid]][fX], FurnitureInfo[PlayerUseingFurniture[playerid]][fY], FurnitureInfo[PlayerUseingFurniture[playerid]][fZ]); FurnitureInfo[PlayerUseingFurniture[playerid]][fZ] -= 1.0; FurnitureInfo[PlayerUseingFurniture[playerid]][fRX] = 0.0; FurnitureInfo[PlayerUseingFurniture[playerid]][fRY] = 0.0; FurnitureInfo[PlayerUseingFurniture[playerid]][fRZ] = 0.0; FurnitureInfo[PlayerUseingFurniture[playerid]][fvID] = GetPlayerVirtualWorld(playerid); FurnitureInfo[PlayerUseingFurniture[playerid]][fInt] = GetPlayerInterior(playerid); new name[256],pName[MAX_PLAYER_NAME]; GetPlayerName(playerid, pName, MAX_PLAYER_NAME); format(name, sizeof(name), "%s",pName); FurnitureInfo[PlayerUseingFurniture[playerid]][fOwner]=name; CreateFurniture(PlayerUseingFurniture[playerid]); SaveFurniture(FurnitureInfo[PlayerUseingFurniture[playerid]][fID]); return 1; } public RecoveryLift() { for(new i=0; i<MAX_PLAYERS; i++) { if(!IsPlayerInAnyVehicle(i)) { if(GetPlayerAnimationIndex(i)) { if(PlayerLiftup[i] == true) { new animlib[32]; new animname[32]; GetAnimationName(GetPlayerAnimationIndex(i), animlib, 32, animname, 32); if(strcmp(animname, "crry_prtial", true) != 0) { ApplyAnimation(i, "CARRY", "crry_prtial", 4.0, 0, 0, 1, 1, 1); } } } } } return 1; } //Stock stock GetFurnitureID() { new i=1; while(i != MAX_FURNITURE) { if(FurnitureInfo[i][fID] == 0) { return i; } i++; } return -1; } stock GetClosestFurniture(playerid) { new i=1; while(i != MAX_FURNITURE) { if(IsPlayerInRangeOfPoint(playerid, 1.5, FurnitureInfo[i][fX], FurnitureInfo[i][fY], FurnitureInfo[i][fZ]) && FurnitureInfo[i][fLiftup] == false) { return i; } i++; } return -1; } PreloadAnimLib(playerid, animlib[]) { ApplyAnimation(playerid, animlib, "null", 0.0, 0, 0, 0, 0, 0); } //Function public OnFilterScriptInit() { LoadFurniture(); RecoveryLiftTimer = SetTimer("RecoveryLift", 2000, true); for(new i=0; i<=MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { PlayerUseingFurniture[i] = 0; PlayerLiftup[i] = false; PlayerPutDown[i] = false; } } return 1; } public OnFilterScriptExit() { KillTimer(RecoveryLiftTimer); for(new i=1; i<MAX_FURNITURE; i++) { if(FurnitureInfo[i][fID] != 0) { DestroyDynamic3DTextLabel(FurnitureInfo[i][fText]); DestroyDynamicObject(FurnitureInfo[i][fObject]); FurnitureInfo[i][fID] = 0; FurnitureInfo[i][fLiftup] = true; } } return 1; } public OnPlayerConnect(playerid) { PlayerUseingFurniture[playerid] = 0; PlayerLiftup[playerid] = false; PlayerPutDown[playerid] = false; // PreloadAnimLib(playerid, "CARRY"); PreloadAnimLib(playerid, "Freeweights"); return 1; } public OnPlayerDisconnect(playerid,reason) { if(PlayerLiftup[playerid] == true) { PlayerLiftup[playerid] = false; FurnitureInfo[PlayerUseingFurniture[playerid]][fLiftup] = false; CreateFurniture(PlayerUseingFurniture[playerid]); //SaveFurniture(FurnitureInfo[PlayerUseingFurniture[playerid]][fID]); RemovePlayerAttachedObject(playerid, 9); } if(PlayerEdit[playerid] == true) { PlayerEdit[playerid] = false; FurnitureInfo[PlayerUseingFurniture[playerid]][fLiftup] = false; new string[128]; format(string, sizeof(string), "%d", FurnitureInfo[PlayerUseingFurniture[playerid]][fID]); FurnitureInfo[PlayerUseingFurniture[playerid]][fText] = CreateDynamic3DTextLabel(string, 0xFFFFFFFF, FurnitureInfo[PlayerUseingFurniture[playerid]][fX], FurnitureInfo[PlayerUseingFurniture[playerid]][fY], FurnitureInfo[PlayerUseingFurniture[playerid]][fZ], 3.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, FurnitureInfo[PlayerUseingFurniture[playerid]][fvID], FurnitureInfo[PlayerUseingFurniture[playerid]][fInt]); //SaveFurniture(FurnitureInfo[PlayerUseingFurniture[playerid]][fID]); } return 1; } public OnPlayerSpawn(playerid) { if(PlayerLiftup[playerid] == true) { SetPlayerAttachedObject(playerid, 9, FurnitureInfo[PlayerUseingFurniture[playerid]][fModel], 1, 0, 0.6, 0, 0, 90, 0, 1, 1, 1); SCM(playerid,0xFFFFFFC8,"* You just died, furniture has been restore to your hands up."); } return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { new idx; new cmd[256]; cmd = str(cmdtext, idx); if(strcmp(cmd,"/Create",true) == 0) { if(!IsPlayerAdmin(playerid)) return 0; new tmp[128], Model, Float:x, Float:y, Float:z; new NewID = GetFurnitureID(); tmp = str(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, 0xBFC0C2FF, "Use: /Create [Model]"); return 1; } Model = strval(tmp); if(NewID == -1) return SCM(playerid, 0xFF0000C8, "* No extra furniture that you can not continue to create."); GetPlayerPos(playerid,x,y,z); FurnitureInfo[NewID][fID] = NewID; FurnitureInfo[NewID][fModel] = Model; FurnitureInfo[NewID][fX] = x +1; FurnitureInfo[NewID][fY] = y +1; FurnitureInfo[NewID][fZ] = z; FurnitureInfo[NewID][fRX] = 0; FurnitureInfo[NewID][fRY] = 0; FurnitureInfo[NewID][fRZ] = 0; FurnitureInfo[NewID][fvID] = GetPlayerVirtualWorld(playerid); FurnitureInfo[NewID][fInt] = GetPlayerInterior(playerid); FurnitureInfo[NewID][fLiftup] = false; new name[256],owner[256]; format(name, sizeof(name), "未命名的家具"); FurnitureInfo[NewID][fName]=name; format(owner, sizeof(owner), "幻想城系统"); FurnitureInfo[NewID][fOwner]=owner; CreateFurniture(NewID); SaveFurniture(NewID); return 1; } if(strcmp(cmd,"/Remove",true) == 0) { if(!IsPlayerAdmin(playerid)) return 0; new tmp[128], id, string[256]; tmp = str(cmdtext, idx); if(!strlen(tmp)) { SCM(playerid, 0xB4B5B7FF, "Use: /Remove [Furniture ID]"); return 1; } id = strval(tmp); if(FurnitureInfo[id][fLiftup] == true) return SCM(playerid, 0xFFFF00C8, "* Someone is using this furniture! (Can not delete)"); DestroyDynamic3DTextLabel(FurnitureInfo[id][fText]); DestroyDynamicObject(FurnitureInfo[id][fObject]); FurnitureInfo[id][fID] = 0; FurnitureInfo[id][fLiftup] = true; format(string, sizeof(string), "Furniture/%d.ini", id); if(fexist(string)) { dini_Remove(string); format(string, sizeof(string), "* Successfully removed (Furniture ID: %d).", id); SCM(playerid, 0xFF0000C8, string); } else { format(string, sizeof(string), "* Error (Furniture ID: %d).", id); SCM(playerid, 0xFF0000C8, string); } return 1; } /*if(strcmp(cmd,"/near",true) == 0) { Dialog(playerid, 4499, DIALOG_STYLE_MSGBOX, "搜索家具", "搜索你附近300米的家具,并传送过去,获得坐标\n收费 $500\n此功能非常耗资源,无论你找到还是未找到,马上花费 $500", "搜索", "取消"); }*/ return 0; } public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { if(newkeys == 65536) { if(PlayerLiftup[playerid] == true) return Dialog(playerid, 999, DIALOG_STYLE_MSGBOX, "{ff0000}警告", "{ff0000}你正拿着家具", "Okay", ""); if(PlayerEdit[playerid] == true) return Dialog(playerid, 999, DIALOG_STYLE_MSGBOX, "{ff0000}警告", "{ff0000}你正在编辑家具", "Okay", ""); new string[256]; new string2[256]; if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT) { PlayerUseingFurniture[playerid] = GetClosestFurniture(playerid); if(PlayerUseingFurniture[playerid] != -1) { if(FurnitureInfo[PlayerUseingFurniture[playerid]][fvID]>1000) { if(GHID(playerid)+1000!=FurnitureInfo[PlayerUseingFurniture[playerid]][fvID]) { format(string, sizeof(string), "{FFFF80}家具ID: %d", FurnitureInfo[PlayerUseingFurniture[playerid]][fID]); format(string2, sizeof(string2), "{ff0000}这不是你的家具\n\n{FFFFFF}%s\n{C0C0C0}By:%s", FurnitureInfo[PlayerUseingFurniture[playerid]][fName],FurnitureInfo[PlayerUseingFurniture[playerid]][fOwner]); Dialog(playerid, 999, DIALOG_STYLE_MSGBOX, string, string2, "Okay", ""); return 1; } } if(GetPlayerVirtualWorld(playerid) != FurnitureInfo[PlayerUseingFurniture[playerid]][fvID] || GetPlayerInterior(playerid) != FurnitureInfo[PlayerUseingFurniture[playerid]][fInt]) return 1; format(string, sizeof(string), "{FFFF80}家具ID: %d", FurnitureInfo[PlayerUseingFurniture[playerid]][fID]); format(string2, sizeof(string2), "{FFFFFF}%s\n{C0C0C0}By:%s", FurnitureInfo[PlayerUseingFurniture[playerid]][fName],FurnitureInfo[PlayerUseingFurniture[playerid]][fOwner]); Dialog(playerid, Dialog_Edit, DIALOG_STYLE_MSGBOX, string, string2, "搬起", "选项"); } } } return 1; } public OnPlayerUpdate(playerid) { new k, ud, lr; GetPlayerKeys(playerid, k, ud, lr); if(k == 128) { if(PlayerLiftup[playerid] == true && PlayerPutDown[playerid] == false) { Dialog(playerid, Dialog_Down, DIALOG_STYLE_MSGBOX, "家具", "是否放下?", "放下", "取消"); } } if(PlayerEdit[playerid] == true) { if(!IsPlayerInRangeOfPoint(playerid, 200, FurnitureInfo[PlayerUseingFurniture[playerid]][fX],FurnitureInfo[PlayerUseingFurniture[playerid]][fY],FurnitureInfo[PlayerUseingFurniture[playerid]][fZ])) { PlayerEdit[playerid] = false; DestroyDynamicObject(FurnitureInfo[PlayerUseingFurniture[playerid]][fObject]); CreateFurniture(PlayerUseingFurniture[playerid]); CancelEdit(playerid); FurnitureInfo[PlayerUseingFurniture[playerid]][fX] = FurnitureInfo[PlayerUseingFurniture[playerid]][fX]; FurnitureInfo[PlayerUseingFurniture[playerid]][fY] = FurnitureInfo[PlayerUseingFurniture[playerid]][fY]; FurnitureInfo[PlayerUseingFurniture[playerid]][fZ] = FurnitureInfo[PlayerUseingFurniture[playerid]][fZ]; FurnitureInfo[PlayerUseingFurniture[playerid]][fRX] = FurnitureInfo[PlayerUseingFurniture[playerid]][fRX]; FurnitureInfo[PlayerUseingFurniture[playerid]][fRY] = FurnitureInfo[PlayerUseingFurniture[playerid]][fRY]; FurnitureInfo[PlayerUseingFurniture[playerid]][fRZ] = FurnitureInfo[PlayerUseingFurniture[playerid]][fRZ]; FurnitureInfo[PlayerUseingFurniture[playerid]][fLiftup] = false; Dialog(playerid,999,DIALOG_STYLE_MSGBOX,"{ff0000}警告","{FF0000}距离过远,自动退出,家具返回原来位置","Okay",""); } } return 1; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == Dialog_Edit) { if(response) { if(!IsPlayerInRangeOfPoint(playerid, 1.5, FurnitureInfo[PlayerUseingFurniture[playerid]][fX],FurnitureInfo[PlayerUseingFurniture[playerid]][fY],FurnitureInfo[PlayerUseingFurniture[playerid]][fZ])) return Dialog(playerid,999,DIALOG_STYLE_MSGBOX,"{ff0000}警告","{FF0000}你不在家具附近","Okay",""); //ApplyAnimation(playerid, "CARRY", "liftup", 4, 0, 0, 0, 0, 0); SCM(playerid, -1, "提示:按鼠标右键可以放下家具"); FurnitureInfo[PlayerUseingFurniture[playerid]][fLiftup] = true; PlayerLiftup[playerid] = true; ClearAnimations(playerid); ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.0, 0, 0, 1, 1, 1); DestroyDynamic3DTextLabel(FurnitureInfo[PlayerUseingFurniture[playerid]][fText]); DestroyDynamicObject(FurnitureInfo[PlayerUseingFurniture[playerid]][fObject]); SetPlayerAttachedObject(playerid, 9, FurnitureInfo[PlayerUseingFurniture[playerid]][fModel], 1, 0, 0.6, 0, 0, 90, 0, 1, 1, 1); } if(!response) { new string[256]; format(string, sizeof(string), "{FFFF80}家具ID: %d", FurnitureInfo[PlayerUseingFurniture[playerid]][fID]); Dialog(playerid, Dialog_Edit2, DIALOG_STYLE_LIST, string, "编辑位置\n家具名称", "选择", "关闭"); } } if(dialogid == Dialog_Edit2) { if(response) { if(!IsPlayerInRangeOfPoint(playerid, 1.5, FurnitureInfo[PlayerUseingFurniture[playerid]][fX],FurnitureInfo[PlayerUseingFurniture[playerid]][fY],FurnitureInfo[PlayerUseingFurniture[playerid]][fZ])) return Dialog(playerid,999,DIALOG_STYLE_MSGBOX,"{ff0000}警告","{FF0000}你不在家具附近","Okay",""); if(listitem == 0) { if(GetPlayerVirtualWorld(playerid)<1000) return Dialog(playerid, 999, DIALOG_STYLE_MSGBOX, "{ff0000}警告", "{ff0000}这个家具不在房子里,无法编辑", "Okay", ""); FurnitureInfo[PlayerUseingFurniture[playerid]][fLiftup] = true; PlayerEdit[playerid] = true; DestroyDynamic3DTextLabel(FurnitureInfo[PlayerUseingFurniture[playerid]][fText]); EditDynamicObject(playerid, FurnitureInfo[PlayerUseingFurniture[playerid]][fObject]); } if(listitem == 1) { Dialog(playerid,4505,DIALOG_STYLE_INPUT,"家具名称","设置你的家具名称,在按Y后会显示在对话框\n{ff0000}如果内容带有辱骂这个家具将会被删除","设置","取消"); } } } if(dialogid == 4505) { if(response) { if(strlen(inputtext)<1) return Dialog(playerid, 999, DIALOG_STYLE_MSGBOX, "{ff0000}警告", "{ff0000}请输入家具名称", "Okay", ""); if(strlen(inputtext)>20) return Dialog(playerid, 999, DIALOG_STYLE_MSGBOX, "{ff0000}警告", "{ff0000}最多20个字符", "Okay", ""); new name[256]; format(name, sizeof(name), "%s",inputtext); FurnitureInfo[PlayerUseingFurniture[playerid]][fName]=name; Dialog(playerid, 999, DIALOG_STYLE_MSGBOX, "家具名称", "设置成功!", "Okay", ""); } } if(dialogid == Dialog_Down) { if(response) { if(GetPlayerVirtualWorld(playerid)>0){if(GetPlayerVirtualWorld(playerid)<1000) return Dialog(playerid, 999, DIALOG_STYLE_MSGBOX, "{ff0000}警告", "{ff0000}禁止在非大世界里放下家具", "Okay", "");} if(PlayerLiftup[playerid] == false) return Dialog(playerid, 999, DIALOG_STYLE_MSGBOX, "{ff0000}警告", "{ff0000}你手上没有拿着家具", "Okay",""); ApplyAnimation(playerid, "CARRY", "putdwn", 4.0, 0, 0, 0, 0, 0); SetTimerEx("PutDown", 1100, false, "i", playerid); RemovePlayerAttachedObject(playerid, 9); PlayerPutDown[playerid] = true; PlayerLiftup[playerid] = false; } } if(dialogid == 4499) { if(GPC(playerid)<500) return Dialog(playerid, 999, DIALOG_STYLE_MSGBOX, "{ff0000}警告", "{ff0000}你现金不够$500", "Okay",""); CallRemoteFunction( "SPC1", "ii", playerid, 500 );//扣钱 new string[256]; new id = 0; for(new i=1; i<MAX_FURNITURE; i++) { if(IsPlayerInRangeOfPoint(playerid, 300, FurnitureInfo[i][fX], FurnitureInfo[i][fY], FurnitureInfo[i][fZ]) && FurnitureInfo[i][fLiftup] == false) { new Smg[128]; format(Smg, sizeof(Smg), "ID: %d\n", FurnitureInfo[i][fID]); strcat(string, Smg); ShowPlayerRangeFurniture[playerid][id] = FurnitureInfo[i][fID]; id ++; } } if(id==0) return Dialog(playerid, 999, DIALOG_STYLE_MSGBOX, "{ff0000}警告", "{ff0000}你附近300米没有任何家具", "Okay",""); Dialog(playerid, Dialog_GetRangeFurniture, DIALOG_STYLE_LIST, "传送最近家具", string, "传送","关闭"); } if(dialogid == Dialog_GetRangeFurniture) { if(!response) return 1; SetPlayerPos(playerid,FurnitureInfo[PlayerUseingFurniture[playerid]][fX], FurnitureInfo[PlayerUseingFurniture[playerid]][fY], FurnitureInfo[PlayerUseingFurniture[playerid]][fZ]); new string[256]; PlayerUseingFurniture[playerid] = ShowPlayerRangeFurniture[playerid][listitem]; format(string, sizeof(string), "家具 %d 的坐标:\nX: %f\nY: %f\nZ: %f", FurnitureInfo[PlayerUseingFurniture[playerid]][fID],FurnitureInfo[PlayerUseingFurniture[playerid]][fX], FurnitureInfo[PlayerUseingFurniture[playerid]][fY], FurnitureInfo[PlayerUseingFurniture[playerid]][fZ]); Dialog(playerid, 999, DIALOG_STYLE_MSGBOX, "家具坐标", string, "Okay", ""); } return 0; } //Inc Public public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz) { new Float:oldX, Float:oldY, Float:oldZ,Float:oldRotX, Float:oldRotY, Float:oldRotZ; new string[256]; format(string,sizeof(string),"%d", FurnitureInfo[PlayerUseingFurniture[playerid]][fID]); GetDynamicObjectPos(objectid, oldX, oldY, oldZ); GetDynamicObjectRot(objectid, oldRotX, oldRotY, oldRotZ); /*if(GetPVarInt(playerid,"IsSet")==0) { SetPVarFloat(playerid,"lastx",FurnitureInfo[PlayerUseingFurniture[playerid]][fX]); SetPVarFloat(playerid,"lasty",FurnitureInfo[PlayerUseingFurniture[playerid]][fY]); SetPVarFloat(playerid,"lastz",FurnitureInfo[PlayerUseingFurniture[playerid]][fY]); SetPVarFloat(playerid,"lastrx",FurnitureInfo[PlayerUseingFurniture[playerid]][fRX]); SetPVarFloat(playerid,"lastry",FurnitureInfo[PlayerUseingFurniture[playerid]][fRY]); SetPVarFloat(playerid,"lastrz",FurnitureInfo[PlayerUseingFurniture[playerid]][fRZ]); SetPVarInt(playerid,"lasti",FurnitureInfo[PlayerUseingFurniture[playerid]][fInt]); SetPVarInt(playerid,"lastv",FurnitureInfo[PlayerUseingFurniture[playerid]][fvID]); SetPVarString(playerid,"laststring",string); SetPVarInt(playerid,"IsSet",1); } if(!IsPlayerInRangeOfPoint(playerid, 10, FurnitureInfo[PlayerUseingFurniture[playerid]][fX],FurnitureInfo[PlayerUseingFurniture[playerid]][fY],FurnitureInfo[PlayerUseingFurniture[playerid]][fZ])) { SetDynamicObjectPos(objectid, GetPVarFloat(playerid,"lastx"),GetPVarFloat(playerid,"lasty"),GetPVarFloat(playerid,"lastz")); SetDynamicObjectRot(objectid, GetPVarFloat(playerid,"lastrx"),GetPVarFloat(playerid,"lastry"),GetPVarFloat(playerid,"lastrz")); FurnitureInfo[PlayerUseingFurniture[playerid]][fX] = GetPVarFloat(playerid,"lastx"); FurnitureInfo[PlayerUseingFurniture[playerid]][fY] = GetPVarFloat(playerid,"lasty"); FurnitureInfo[PlayerUseingFurniture[playerid]][fZ] = GetPVarFloat(playerid,"lastz"); FurnitureInfo[PlayerUseingFurniture[playerid]][fRX] = GetPVarFloat(playerid,"lastrx"); FurnitureInfo[PlayerUseingFurniture[playerid]][fRY] = GetPVarFloat(playerid,"lastry"); FurnitureInfo[PlayerUseingFurniture[playerid]][fRZ] = GetPVarFloat(playerid,"lastrz"); FurnitureInfo[PlayerUseingFurniture[playerid]][fvID] = GetPVarInt(playerid,"lastv"); FurnitureInfo[PlayerUseingFurniture[playerid]][fInt] = GetPVarInt(playerid,"lasti"); FurnitureInfo[PlayerUseingFurniture[playerid]][fText] = CreateDynamic3DTextLabel(string, 0xFFFFFFFF, FurnitureInfo[PlayerUseingFurniture[playerid]][fX], FurnitureInfo[PlayerUseingFurniture[playerid]][fY], FurnitureInfo[PlayerUseingFurniture[playerid]][fZ], 3.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, FurnitureInfo[PlayerUseingFurniture[playerid]][fvID], FurnitureInfo[PlayerUseingFurniture[playerid]][fInt]); FurnitureInfo[PlayerUseingFurniture[playerid]][fLiftup] = false; PlayerEdit[playerid] = false; Dialog(playerid,999,DIALOG_STYLE_MSGBOX,"{ff0000}警告","{FF0000}距离过远,自动退出,家具返回原来位置","Okay",""); return 1; }*/ if(response == EDIT_RESPONSE_FINAL) { FurnitureInfo[PlayerUseingFurniture[playerid]][fX] = x; FurnitureInfo[PlayerUseingFurniture[playerid]][fY] = y; FurnitureInfo[PlayerUseingFurniture[playerid]][fZ] = z; FurnitureInfo[PlayerUseingFurniture[playerid]][fRX] = rx; FurnitureInfo[PlayerUseingFurniture[playerid]][fRY] = ry; FurnitureInfo[PlayerUseingFurniture[playerid]][fRZ] = rz; FurnitureInfo[PlayerUseingFurniture[playerid]][fvID] = GetPlayerVirtualWorld(playerid); FurnitureInfo[PlayerUseingFurniture[playerid]][fInt] = GetPlayerInterior(playerid); SetDynamicObjectPos(objectid, x, y, z); SetDynamicObjectRot(objectid, rx, ry, rz); FurnitureInfo[PlayerUseingFurniture[playerid]][fText] = CreateDynamic3DTextLabel(string, 0xFFFFFFFF, FurnitureInfo[PlayerUseingFurniture[playerid]][fX], FurnitureInfo[PlayerUseingFurniture[playerid]][fY], FurnitureInfo[PlayerUseingFurniture[playerid]][fZ], 3.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, FurnitureInfo[PlayerUseingFurniture[playerid]][fvID], FurnitureInfo[PlayerUseingFurniture[playerid]][fInt]); SaveFurniture(FurnitureInfo[PlayerUseingFurniture[playerid]][fID]); FurnitureInfo[PlayerUseingFurniture[playerid]][fLiftup] = false; SCM(playerid,-1,"{FFFF80}保存"); PlayerEdit[playerid] = false; } if(response == EDIT_RESPONSE_CANCEL) { SetDynamicObjectPos(objectid, oldX, oldY, oldZ); SetDynamicObjectRot(objectid, oldRotX, oldRotY, oldRotZ); FurnitureInfo[PlayerUseingFurniture[playerid]][fX] = oldX; FurnitureInfo[PlayerUseingFurniture[playerid]][fY] = oldY; FurnitureInfo[PlayerUseingFurniture[playerid]][fZ] = oldZ; FurnitureInfo[PlayerUseingFurniture[playerid]][fRX] = oldRotX; FurnitureInfo[PlayerUseingFurniture[playerid]][fRY] = oldRotY; FurnitureInfo[PlayerUseingFurniture[playerid]][fRZ] = oldRotZ; FurnitureInfo[PlayerUseingFurniture[playerid]][fvID] = GetPlayerVirtualWorld(playerid); FurnitureInfo[PlayerUseingFurniture[playerid]][fInt] = GetPlayerInterior(playerid); FurnitureInfo[PlayerUseingFurniture[playerid]][fText] = CreateDynamic3DTextLabel(string, 0xFFFFFFFF, FurnitureInfo[PlayerUseingFurniture[playerid]][fX], FurnitureInfo[PlayerUseingFurniture[playerid]][fY], FurnitureInfo[PlayerUseingFurniture[playerid]][fZ], 3.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, FurnitureInfo[PlayerUseingFurniture[playerid]][fvID], FurnitureInfo[PlayerUseingFurniture[playerid]][fInt]); FurnitureInfo[PlayerUseingFurniture[playerid]][fLiftup] = false; SCM(playerid,-1,"{FF0000}取消"); PlayerEdit[playerid] = false; } return 1; } Dialog(playerid, dialogid, style, caption[], info[], button1[], button2[]) { ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2); return SetPVarInt(playerid,"DialogID",dialogid); } stock str(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; }