void Jailsystem (Player* plr){ static QueryResult * check=NULL; check=WorldDatabase.Query("SELECT `jailed` FROM `Jail` WHERE `GUID`='%i'", plr->GetGUIDLow()); // 读取数据 if(!check) {return;} float x = plr->GetPositionX(); float y = plr->GetPositionY(); float z = plr->GetPositionZ(); float o = plr->GetOrientation(); GameObject *go = m_session->GetPlayer()->GetMapMgr()->CreateGameObject(); GameObjectInfo* goi = GameObjectNameStorage.LookupEntry(502077); go->CreateFromProto(502077,mapid,x,y,z,o); GOSpawn * gs = new GOSpawn; gs->entry = go->GetEntry(); gs->facing = go->GetOrientation(); gs->faction = go->GetUInt32Value(GAMEO*JECT_FACTION); gs->flags = go->GetUInt32Value(GAMEO*JECT_FLAGS); gs->id = objmgr.GenerateGameObjectSpawnID(); gs->o = go->GetFloatValue(GAMEO*JECT_ROTATION); gs->o1 = go->GetFloatValue(GAMEO*JECT_ROTATION_01); gs->o2 = go->GetFloatValue(GAMEO*JECT_ROTATION_02); gs->o3 = go->GetFloatValue(GAMEO*JECT_ROTATION_03); gs->scale = go->GetFloatValue(O*JECT_FIELD_SCALE_X); gs->x = go->GetPositionX(); gs->y = go->GetPositionY(); gs->z = go->GetPositionZ(); gs->state = go->GetUInt32Value(GAMEO*JECT_STATE); gs->stateNpcLink = 0; delete GOspawn; } void Setup*JailSystem(ScriptMgr* mgr){ mgr->register_hook(SERVER_HOOK_EVENT_ON_ENTER_WORLD, Jailsystem); } SQL插入 CREATE TA*LE `Jail` ( `id` int(11) NOT NULL auto_increment, `jailed` int(11) NOT NULL, `GUID` int(11) NOT NULL, UNIQUE KEY `id` (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=24 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; |